Angular 中 multi Provider 有什么作用?
首先我们先来分析一下,若没有设置 multi: true
属性时,使用同一个 token 注册 provider 时,会出现什么问题?
class Engine { }
class TurboEngine { }
var injector = ReflectiveInjector.resolveAndCreate([
provide(Engine, {useClass: Engine}),
provide(Engine, {useClass: TurboEngine})
]);
var engine = injector.get(Engine); // engine instanceof TurboEngine == true
这说明如果使用同一个 token 注册 provider,后面注册的 provider 将会覆盖前面已注册的 provider。此外,Angular 2 使用 multi provider 的这种机制,为我们提供可插拔的钩子 (pluggable hooks) 。另外需要注意的是,multi provider 是不能和普通的 provider 混用。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论