【发布时间】:2017-01-07 08:36:58
【问题描述】:
Angular DI Multi Provider 机制是否保证某种顺序?
例子:
const TOKEN: OpaqueToken = new OpaqueToken('token');
@Injectable()
class MyService (@Inject(TOKEN) deps: any[]) {/* What is order of deps? */}
@NgModule ({
providers: [
{provide: TOKEN, multi: true, useValue: 1},
{provide: TOKEN, multi: true, useValue: 2},
{provide: TOKEN, multi: true, useValue: 3},
MyService
})
class MyModule {}
【问题讨论】:
-
应该是它们的添加顺序,但我不知道保证。您可以提供一个数组而不是
multi: true以按定义的顺序获取值。 -
@GünterZöchbauer 在这个简单的示例中,您可以注入这些值的数组,但在更复杂的情况下,如果我想注入一些依赖于其他事物的类,它将无法工作
-
我明白了。抱歉,没有更好的主意。
-
blog.thoughtram.io/angular2/2015/11/23/… 可能会有所帮助...看起来只有最后一个存在...!此外,如本博客所述,多提供者也不能与普通提供者混合。这是有道理的,因为我们要么扩展或覆盖令牌的提供者。
-
我有同样的问题,在这里创建了一个问题,因为我找不到文档:github.com/angular/angular/issues/23059
标签: angular dependency-injection