Verwenden von Angular 2 und Typoskript. Ich habe ein Array, das DoCheck und IterableDiffer verwendet, um Änderungen in meinem Code zu hören. Wenn das Array geändert wird, erhalte ich Benachrichtigungen, aber wenn sich eine Eigenschaft in einem der Objekte im Array ändert, werde ich nicht benachrichtigt. Ich habe versucht mit KeyValueDiffer, aber es funktioniert nicht. Ich denke, vielleicht muss ich die "_differs.find" anders verwenden. Irgendwelche Ideen?Erkennen von Änderungen in Objekten innerhalb des Arrays in 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);
}
});
}
}
}
Es gibt keine Möglichkeit, auf Veränderungen in einer der Eigenschaften von MyItem
Könnten Sie Code bereitstellen, um zu zeigen, was Sie ausprobiert haben? Vielen Dank! –