簡體   English   中英

偵聽不相關組件更改的模型-Angular 7

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM