Utilizzo di Angular 2 e dattiloscritto. Ho una matrice che uso DoCheck e IterableDiffer per ascoltare le modifiche nel mio codice. Quando la matrice viene modificata ricevo le notifiche, ma quando una proprietà all'interno di uno degli oggetti nella matrice cambia, non ricevo la notifica. Ho provato a usare KeyValueDiffer ma non funziona. Penso che forse ho bisogno di usare "_differs.find" in modo diverso. Qualche idea?Rileva modifiche negli oggetti all'interno dell'array 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);
}
});
}
}
}
Non v'è alcun modo di ricevere la notifica sui cambiamenti in una delle proprietà di MyItem
Potresti fornire del codice per mostrare cosa hai provato? Grazie! –