【发布时间】:2018-03-27 02:02:17
【问题描述】:
Angular 依赖注入允许您使用令牌而不是服务类来注入字符串、函数或对象。
我在我的模块中这样声明它:
providers: [{ provide: MyValueToken, useValue: 'my title value'}]
我是这样使用它的:
constructor(@Inject(MyValueToken) my_value: string) {
this.title = my_value;
}
但是,我怎样才能从组件中更新值并让其他组件每次获取新值?换句话说,我想模拟使用 BehaviorSubject 之类的东西来发出和接收值的功能。
如果这是不可能的,那么如果这些注入令牌值只提供静态数据,那么它们有什么用,因为我可以简单地在我的组件中声明静态值并直接使用它。
【问题讨论】:
-
是的,你可以声明那个静态值,如果它只用在一个地方你应该。当在多个地方使用 DI 并且您想要一致性以及想要注入替代值进行测试时,DI 非常有用。如果两者都不是,不要增加复杂性——仅仅因为你可以,并不意味着你应该这样做。我建议阅读angular.io/guide/dependency-injection-in-action。
-
@jonsharpe 答案很好!谢谢你:)
标签: angular typescript angular-services angular-decorator angular-di