第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

角度2:如何檢測陣列中的變化?(@input屬性)

角度2:如何檢測陣列中的變化?(@input屬性)

慕田峪7331174 2019-10-21 12:35:38
我有一個使用ajax請求檢索對象數(shù)組的父組件。此組件有兩個子組件:一個子組件以樹結構顯示對象,另一個子組件以表格格式呈現(xiàn)其內容。父級通過@input屬性將數(shù)組傳遞給其子級,它們會正確顯示內容。一切都如預期。當您更改對象中的某些字段時,會發(fā)生問題:子組件不會收到這些更改的通知。僅當您手動將數(shù)組重新分配給其變量時,才會觸發(fā)更改。我習慣了使用Knockout JS,并且需要獲得類似于observableArrays的效果。我已經閱讀了有關DoCheck的內容,但不確定如何運行。
查看完整描述

3 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

OnChanges 僅當輸入屬性的實例更改時,生命周期掛鉤才會觸發(fā)。


如果你想檢查是否輸入數(shù)組中的元素已經被添加,移動或刪除,則可以使用IterableDiffers里面DoCheck的生命周期掛鉤,如下所示:


constructor(private _iterableDiffers: IterableDiffers) {

    this.iterableDiffer = this._iterableDiffers.find([]).create(null);

}


ngDoCheck() {

    let changes = this.iterableDiffer.diff(this.inputArray);

    if (changes) {

        console.log('Changes detected!');

    }

}

如果需要檢測數(shù)組中對象的更改,則需要遍歷所有元素,并對每個元素應用KeyValueDiffers。(您可以與先前的檢查同時進行)。


查看完整回答
反對 回復 2019-10-21
?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

您始終可以通過將其與空數(shù)組合并來創(chuàng)建對該數(shù)組的新引用:


this.yourArray = [{...}, {...}, {...}];

this.yourArray[0].yourModifiedField = "whatever";


this.yourArray = [].concat(this.yourArray);

上面的代碼將更改數(shù)組引用,并將觸發(fā)子組件中的OnChanges機制。


查看完整回答
反對 回復 2019-10-21
?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

您可以使用IterableDiffers


由* ngFor使用


constructor(private _differs: IterableDiffers) {}


ngOnChanges(changes: SimpleChanges): void {

  if (!this._differ && value) {

     this._differ = this._differs.find(value).create(this.ngForTrackBy);

  }

}


ngDoCheck(): void {

  if (this._differ) {

    const changes = this._differ.diff(this.ngForOf);

    if (changes) this._applyChanges(changes);

  }

}


查看完整回答
反對 回復 2019-10-21
  • 3 回答
  • 0 關注
  • 588 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號