回答
根据布尔更改的方式,您可以在服务上将其公开为Observable<boolean>
,然后在组件中订阅该流。你的服务看起来是这样的:
@Injectable()
export class MyBooleanService {
myBool$: Observable<boolean>;
private boolSubject: Subject<boolean>;
constructor() {
this.boolSubject = new Subject<boolean>();
this.myBool$ = this.boolSubject.asObservable();
}
...some code that emits new values using this.boolSubject...
}
然后在你的组件,你会有这样的事情:
@Component({...})
export class MyComponent {
currentBool: boolean;
constructor(service: MyBooleanService) {
service.myBool$.subscribe((newBool: boolean) => { this.currentBool = newBool; });
}
}
现在取决于你需要与布尔值做什么,你可能需要做一些其他的东西让你的组件更新,但这是使用observable的要点。
另一种选择是在模板中使用异步管道,而不是显式订阅构造函数中的流。同样,这取决于你需要用bool值做什么。
非常感谢您的帮助! –
你可以从rxjs主题 –
** ** UserService.ts' this._dataService.get
山姆的回答是完全正确的。我只想补充一点,你也可以利用一个打字稿二传手自动触发更改事件:
@Injectable()
export class MyBooleanService {
myBool$: Observable<boolean>;
private boolSubject: Subject<boolean>;
constructor() {
this.boolSubject = new Subject<boolean>();
this.myBool$ = this.boolSubject.asObservable();
}
set myBool(newValue) {
this._myBool = newValue;
this.boolSubject.next(newValue);
}
}
嗨,'this._myBool'从哪里来?不知道对不起 – Lloople
它应该是一个私人布尔服务,他只是忘了把它包括在他的示例代码。 –
- 1. 收听Angular 2中模拟服务的变化
- 2. Angular 2监听web api变化
- 3. Angular 2中的服务变量
- 4. Angular 2使用服务更新组件
- 5. Angular 2导航重新初始化所有服务和组件
- 6. Angular 2获取组件相互倾听
- 7. 如何将组件Angular 2绑定到服务变量?
- 8. Angular 2服务的异步初始化
- 9. Angular 2中的组件内部变量
- 10. Angular 2 - 服务中的组件变量在视图中没有更改
- 11. Angular 2中的MVC - 从服务中更新组件?
- 12. Angular 2 - 实例化(Http)服务手动
- 13. Angular 2服务初始化逻辑
- 14. Angular 2中的服务不会向html组件返回值
- 15. Angular 2 - 如何模拟组件中调用的服务?
- 16. angular 2传递服务方法作为组件中的参数?
- 17. Imprlementing Angular 2服务
- 18. Angular 2服务 - $ mdMedia
- 19. Angular 2 http服务
- 20. Angular 2 - 从服务到同级组件的事件
- 21. Angular 2的邮政服务
- 22. 组件不听MainApp的状态变化
- 23. Angular 2 TranslateService检测变化
- 24. Angular 2 rc1组件初始化
- 25. Angular 2与CLI - 来自不同服务器的组件模板
- 26. 如何在运行时选择组件的Angular 2服务
- 27. Angular 2:服务注入服务,Provider
- 28. 如何参数化Angular 2中的注入服务
- 29. Angular 2:事件广播服务
- 30. Angular 2 Header组件标题根据状态动态变化
见https://angular.io/docs/ts/latest/cookbook/component-communication.html #!#双向服务 –
酷感谢提示! –
@MarkRajcok感谢分享! Angular 2的文档真的出现了......我不知道他们在那里有这样的例子。 –