[英]Listening to Model Changed By An Unrelated Component - Angular 7
我正在嘗試將現有的應用程序轉換為Angular。 我是Angular的新手,真的為很多事情掙扎,我希望這些事情變得簡單。 最新的嘗試是捕獲不相關組件中的模型更改。
我的結構:應用程序>(布局/數據服務)>(組件A /組件B)
組件A訂閱了數據服務,該數據服務的模型表示一堆自定義子組件的值。 這些子組件修改輸入,並將數字值發回給組件A,組件A隨后更新數據服務中的模型。 沒問題,這按說明工作。
組件B也訂閱了相同的數據服務,並基於對模型值的進一步計算來顯示結果。 問題是當組件A的子組件上的輸入值更改時,組件B的值正在更新,但是當它們更新時,我無法觸發UpdataCalculations()函數。 為了解決這個問題,我添加了ngDoCheck()並將函數放置在其中,但這對我來說真的很重要。 我真正想做的是在組件B級別向模型添加一個onChange偵聽器。
所以我想我的問題是:答:Angular可能嗎? B:有沒有更好的方法可以做到這一點?
服務:
export class JobDataService {
private jobData = new BehaviorSubject(new Job_Info_View_Model);
currentJob$ = this.jobData.asObservable();
constructor() {}
}
成分B:
constructor(
private jobData: JobDataService,
) {}
ngOnInit() {
this.jobData.currentJob$.subscribe( (observing: Job_Info_View_Model) => { this.currentJob = observing; } );
}
ngDoCheck() {
this.UpdataCalculations();
}
感謝您的任何幫助
編輯:組件A和B成為單個組件確實沒有任何意義,所以我想避免這種情況。
當@Input()
裝飾器標記的字段從父組件獲取新值時,將調用ngOnChanges
掛鈎。 ngDoCheck
在每次更改檢測時都會被調用,這很常見。 在您的情況下,使用主題,並且每次值更新時都會調用訂閱回調,因此最好的選擇是僅在該回調中進行計算。
this.jobData.currentJob$.subscribe( (observing: Job_Info_View_Model) => {
this.currentJob = observing;
this.UpdataCalculations();
} );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.