Meine Fragen bezieht sich auf Angular (2) mit einer RC1 Gabel von angular.io Probe plunkr. Die Datenbindungsfunktion in der ngFor-Vorlage wird so ausgeführt, als ob die Änderungserkennung bei einem beliebigen Ereignis außerhalb von ngFor als wahr erkannt wird. In meinem Beispiel ein Klick auf eine Schaltfläche außerhalb von ngFor.ngFür neue Ereignisse auf der Komponente neu gezeichnet, auch wenn außerhalb der ngFor
Ich habe mit und ohne die TrackBy-Funktion versucht (obwohl seine schlechte Dokumentation derzeit so nicht sicher, ob ich es richtig benutze); Ich kann nicht herausfinden, wie man sicherstellt, dass jede Aktion nicht zu einem Neuzeichnen des ngFor führt, da dies sehr teuer sein könnte.
Ergebnis log, wenn darauf geklickt:
- Taste
- Zeichnung
- Zeichnung
Sie das Problem auf dieser plunkr durch die Beobachtung der Konsolenprotokoll leben sehen:
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<button (click)="clickOustideFunction()" >hi</button>
<h1 *ngFor="let d of data;trackBy:a">
My First Angular 2 App{{drawingForFunction()}}
</h1>`
})
export class AppComponent {
data= [{"a":1}, {"a":2}];
clickOustideFunction(): void {
console.log("button");
}
drawingForFunction(): void {
console.log("drawing");
}
}
Nicht die Antwort, auf die ich gehofft hatte, denn es scheint einfach zu sein, etwas schlecht laufen zu lassen, aber ich werde in die Change-Detection-Strategien schauen, die über den Komponenten-Dekorator verwendet werden können. Vielen Dank! – sasonic