2017-08-02 105 views
1

我希望組件能夠訂閱或通知服務中變量的變化。如何檢測服務何時更改?

我看着Observables,但我不認爲這會工作,因爲你需要完成流,我需要知道在整個組件處於活動狀態時更改變量。

有沒有人知道這個好策略?

+0

爲什麼你想要一個變量在服務中更改?服務通常用於獲取服務器數據,驗證用戶輸入或直接登錄到控制檯。雖然一個好的組件提供了數據綁定的屬性和方法。因此,讓另一個組件更改變量和跟蹤..(Src:https://angular.io/guide/architecture) –

+0

因爲我檢查用戶是否已登錄並且狀態更改時,我更新了所有組件 –

+0

好吧,我會建議創建一個組件,該組件在用戶登錄時提取,如果是的話;然後從這個組件更新所有其他組件調用服務.. –

回答

3

您是否嘗試過Subject或其任何變體?

使用BehaviorSubject

服務的例子:

export class MyService { 
    myVariableSubject = new BehaviorSubject<number>(0); 

    increase() { 
    this.myVariableSubject.next(this.myVariableSubject.value + 1); 
    } 
} 

組件:

constructor(private myService: MyService) {} 

ngOnInit() { 
    this.myService.myVariableSubject.subscribe((value: number) => console.log(value)); 
} 

警告:這可能不是最合適的解決方案,您的問題(你永遠不會狀態)。

+0

完美的就是這一點。謝謝 –