Wie der Titel sagt, ich bin ein ExpressionChangedAfterIsHasBeenCheckedError
bekommen und nach dem Lesen this article, von dem, was ich verstehe, ist es eine Vorsichtsmaßnahme, um Inkonsistenzen zu verhindern. Genau diese Worte. Irgendwann verletze ich wahrscheinlich den unidirektionalen Fluss (nehme ich an). Was ich habe:ExpressionChangedAfterIsHasBeenCheckedError wegen der Aktualisierung meiner Dropdown-Liste in eckigen 2
Eine Dropdown-Box.
<select id="product" [(ngModel)]="model.searchParameters.productId">
<option *ngFor="let product of products [value]="product.id">{{product.name}}</option>
</select>
Ein Eingabefeld, das checkIban auslöst.
<div *ngIf="checkIban(productnumber, searchForm)">
//show validation errors
</div>
checkIban(field: any, form: any): Boolean {
if(field.dirty)
{
if(field.viewModel.length === Productnumber.Iban)
{
this.model.searchParameters.productId = Product.Ibannumber;
}
}
}
Ich möchte ich das Konzept der ExpressionChangedAfterIsHasBeenCheckedError
verstehen denken, leider für mich nicht gut genug, um wirklich eine richtige Lösung für dieses Problem anwenden.
Verwenden setTimeout
ist keine Option (ich habe es versucht), da es einen unvorhersehbaren Zustand erstellt (wie in dem Artikel geschrieben wurde). Kann mir jemand Hinweise geben, was ich falsch mache?
Dies wird normalerweise verursacht, wenn sich ein gebundener Wert während der Änderungserkennung ändert. Was bewirkt, dass 'checkIban' aufgerufen wird? –
Ich habe meine Antwort Günter aktualisiert. –
Die 'checkIban()' Methode gibt nicht einmal einen Wert zurück, deshalb kann dies nicht funktionieren. –