我嘗試做一個簡單的服務來管理我的應用程序中的單個狀態:加載器的可見性。簡單的狀態服務不需要的複雜性
這些更改將由某些組件發出,主佈局組件將訂閱它以監視布爾值更改。然後通過簡單的ngIf
進行處理。
下面是代碼:
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Rx';
import { Subject } from 'rxjs/Subject';
@Injectable()
export class AppLoaderService {
private isLoaderVisible = new Subject<boolean>();
changeLoaderState = this.isLoaderVisible.asObservable();
emitChange(state: any) {
this.isLoaderVisible.next(state);
}
}
是我創建這個簡單的服務,爲一個簡單的toggler引入太多複雜的方法?
是否使用Subject
或BehaviorSubject
與我的情況有關?當我們想要發出這樣的更改或在服務初始化(BehaviorSubject
)上設置默認值時,我發現了有關使用它們的必要性的一些信息。
但是在這裏也許有一個簡單的Observable
就足夠了,但是如何處理價值變化呢?
請問我的佈局組件,使用這個布爾,能夠檢測到改變這種簡單的布爾?是否需要訂閱任何值(如可觀察的)才能觸發更改檢測? – BlackHoleGalaxy
是的,因爲如果你改變這個變量,你很可能在所謂的「區域」工作。這是角度的美。您只需更改變量,模板立即作出反應。當然,如果你使用默認的'ChangeDetectionStrategy' – PierreDuc