在Angular中,我们可以通过useClass
、useValue
、useFactory
、useExisting
等属性来指定依赖注入的提供者,但是这些属性只能指定一个提供者,如果我们需要指定多个提供者,该怎么办呢?这时候就需要使用multi
属性了。
比如下面这个例子:
1 | import { InjectionToken, NgModule } from '@angular/core'; |
对于MY_MULTI_TOKEN
,我们多次使用useValue
属性来指定提供者,然后通过multi: true
来指定这是一个多提供者。Angular最终会将这些值放到一个数组中返回。所以MY_MULTI_TOKEN
最终的值是['Value1', 'Value2']
Angular内置的ROUTES
token也是multi的,从它的定义就可以看出来,它返回的是Route[]
的数组。
1 | export declare const ROUTES: InjectionToken<Route[][]>; |