Ich habe ein Array von Daten I Schleife wit *ngFor
. Ich möchte nur überprüfen, ob ein Wert unter oder über 0 ist, also habe ich eine CheckPositive-Funktion gemacht. Hier ist der HTML-Code:Fehler: ExpressionChangedAfterItHasBeenCheckedError - Angular
<div class="col-xs-4" [ngStyle]="{'color':color}">
<span>{{checkPositive(contract.transactionAmount) | number: '1.2-2'}} {{contract.contractCurrency}}</span>
</div>
und die TS-Datei
checkPositive(amount){
if(amount > 0){
this.color="blue";
return amount;
}
else{
this.color="red";
return amount;
}
}
Das Ergebnis, das ich bekommen ist, dass die erste Zahl keine Farbe gesetzt hat.
und die Konsole kehrt
Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'undefined'. Current value: 'blue'.
Ich verstehe, was das Problem ist, ich weiß nur nicht, wie es zu lösen.
tun Können Sie Wiedergabe in Plunker zur Verfügung stellen? – yurzui
Es ist eigentlich kompliziert, weil ich Daten durchlaufen, aber alles ist hier –
Das Hauptproblem hier ist, dass Ihre Methode checkPositive ausgeführt wird, nachdem ngStyle Bindung angewendet wurde und innerhalb checkPositive Methode haben Sie Nebenwirkung. https://angular.io/guide/template-syntax#no-visible-side-effects – yurzui