在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内置的ROUTEStoken也是multi的,从它的定义就可以看出来,它返回的是Route[]的数组。
1 | export declare const ROUTES: InjectionToken<Route[][]>; |