Possiedo un componente Angular 2 che utilizza *ngFor
per eseguire il rendering di una matrice nidificata di numeri.Come riutilizzare gli elementi di ngPer anche se il riferimento all'elenco cambia?
@Component({
selector: 'app',
template: `
<div *ngFor="let row in data">
<div *ngFor="let curve in row">
<chart [data]="curve">
</div>
</div>
`,
directives: [Chart],
})
export default class App {
data: number[][][];
}
Quando cambio data
, angolare sostituisce gli elementi <chart>
, anche se la nuova matrice ha le stesse dimensioni. Mi piacerebbe solo aggiornare le proprietà dei grafici ma mantenere gli elementi (in modo da poter animare le modifiche dei dati).
È comprensibile che Angular sostituisca gli elementi poiché il nuovo array è un nuovo riferimento a un oggetto. Ma come posso aggirare questo?
Potrebbe usare [ngForTrackBy] (https://angular.io/docs/ts/latest/guide/template-syntax.html#!#ngfortrackby)? – Michael
@Michael Questo è esattamente quello che stavo cercando: 'trackByIndex (index: number, data: any) {return index; } '. Potresti fare una risposta, per favore? – danijar
+1 Questa domanda ha una preoccupante visualizzazione delle quantità di visualizzazioni e di upvotes. ReactJS, ad esempio, genera un sibilo se si dimentica di fornire agli elementi della lista una proprietà 'chiave' in modo che l'elenco possa essere riscritto economicamente. –