ClassProvider

Configures the Injector to return an instance of useClass for a token.

interface ClassProvider extends ClassSansProvider { provide: any multi?: boolean }

说明

For more details, see the "Dependency Injection Guide".

属性

属性名类型说明
provide

An injection token. (Typically an instance of Type or InjectionToken, but can be any).

multi

If true, then injector returns an array of instances. This is useful to allow multiple providers spread across many files to provide configuration information to a common token.

使用说明

Example

abstract class Shape { // TODO(issue/24571): remove '!'. name !: string; } class Square extends Shape { name = 'square'; } const injector = ReflectiveInjector.resolveAndCreate([{provide: Shape, useClass: Square}]); const shape: Shape = injector.get(Shape); expect(shape.name).toEqual('square'); expect(shape instanceof Square).toBe(true);

Note that following two providers are not equal:

class Greeting { salutation = 'Hello'; } class FormalGreeting extends Greeting { salutation = 'Greetings'; } const injector = ReflectiveInjector.resolveAndCreate( [FormalGreeting, {provide: Greeting, useClass: FormalGreeting}]); // The injector returns different instances. // See: {provide: ?, useExisting: ?} if you want the same instance. expect(injector.get(FormalGreeting)).not.toBe(injector.get(Greeting));

Multi-value example

const locale = new InjectionToken<string[]>('locale'); const injector = Injector.create([ {provide: locale, multi: true, useValue: 'en'}, {provide: locale, multi: true, useValue: 'sk'}, ]); const locales: string[] = injector.get(locale); expect(locales).toEqual(['en', 'sk']);