回答
根據布爾更改的方式,您可以在服務上將其公開爲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的文檔真的出現了......我不知道他們在那裏有這樣的例子。 –