FactoryProvider

Configures the Injector to return a value by invoking a useFactory function.

interface FactoryProvider extends FactorySansProvider { 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

const Location = new InjectionToken('location'); const Hash = new InjectionToken('hash'); const injector = Injector.create([ {provide: Location, useValue: 'http://angular.io/#someLocation'}, { provide: Hash, useFactory: (location: string) => location.split('#')[1], deps: [Location] } ]); expect(injector.get(Hash)).toEqual('someLocation');

Dependencies can also be marked as optional:

const Location = new InjectionToken('location'); const Hash = new InjectionToken('hash'); const injector = Injector.create([{ provide: Hash, useFactory: (location: string) => `Hash for: ${location}`, // use a nested array to define metadata for dependencies. deps: [[new Optional(), Location]] }]); expect(injector.get(Hash)).toEqual('Hash for: null');

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']);