使用Angular 2和typescript。我有一個數組,我使用DoCheck和IterableDiffer來偵聽我的代碼中的更改。當數組發生變化時,我收到通知,但是當數組中的一個對象中的某個屬性發生更改時,我不會收到通知。 我嘗試過使用KeyValueDiffer,但它不起作用。 我想也許我需要以不同的方式使用「_differs.find」。 任何想法?檢測Angular2中陣列內物體的變化
@Component({
selector: 'test'
})
@View({
template: `
<div>hello!</div>`
})
export class MyComponent implements DoCheck {
private _differ: IterableDiffer;
private _differ2: KeyValueDiffer;
_myItems: MyItem[];
@Input()
set myItems(value: MyItem[]) {
this._myItems = value;
if (!this._differ && value) {
this._differ = this._iterableDiffers.find([]).create(null);
}
if (!this._differ2 && value) {
this._differ2 = this._differs.find(this._myItems).create(null);
}
}
get myItems() {
return this._myItems;
}
constructor(private _iterableDiffers: IterableDiffers, private _differs: KeyValueDiffers, private _myService: MyService) {
this.myItems = _myService.getItems();
}
ngDoCheck() {
var changes = this._differ.diff(this._myItems);
if (changes) {
changes.forEachAddedItem((record) => {
console.log('added ' + record.item);
});
changes.forEachRemovedItem((record) => {
console.log('removed ' + record.item);
});
}
var changes2 = this._differ2.diff(this._myItems);
if (changes2) {
changes2.forEachChangedItem(
(record) => {
console.log(record.key + "," + record.currentValue);
}
});
}
}
}
有沒有辦法讓MyItem
你能提供一些代碼來展示你的嘗試嗎?謝謝! –