Ich habe ein Formular, das programmgesteuert über DynamicComponentLoader::loadIntoLocation
instanziiert wird. Die Codeform ist unter:FormBuilder Control verursacht "Ausdruck hat sich geändert, nachdem es überprüft wurde" Ausnahme
constructor (
private _builder: FormBuilder
) {
this.editForm = _builder.group({
name: ['', Validators.required],
email: ['', Validators.compose([Validators.required, Helpers.emailValidator])],
phone: [''],
phoneAlt: [''],
location: [''],
dob: [''],
bio: [''],
});
}
Sie werden bemerken, dass einige der Formen haben keine Validatoren (soweit ich das beurteilen kann, dies ist das gleiche wie mit Validators.nullValidator
ich mit beiden getestet habe) .
In meiner Vorlage ich den folgenden Code haben (für jede Kontrolle):
<label for="phone">Contact Number <span *ngIf="!phone.valid">- {{e(phone)}}</span></label>
<input type="text" name="phone" id="phone" ngControl="phone" #phone="ngForm">
Die erste Kontrolle, die keinen Validator hat wirft die folgende Ausnahme zweimal, wenn es trifft den !phone.valid
Teil der Vorlage:
EXCEPTION: Expression '!phone.valid in [email protected]:43' has changed after it was checked. Previous value: 'true'. Current value: 'false' in [!phone.valid in [email protected]:43]
zu keinem Zeitpunkt ist ich die Kontrollen oder this.editForm
nach der ersten Schöpfung zu berühren, so, so weit wie mein Code betrifft, so sollte nichts ändert werden.
Ich bin mir bewusst, dass ich die Fehler unterdrücken kann, indem ich enableProdMode()
aufrufen, aber ich würde lieber das Problem beheben, als es zu verstecken.
Bearbeiten (8. Feb): Ich habe seit dem versucht, den Inhalt des Modals auf eine separate Seite zu verschieben, aber die Fehler bestehen fort. Dies würde darauf hindeuten, dass das Problem nicht mit der Art und Weise zusammenhängt, wie ich die Modals erstelle und lade, sondern vielmehr mit der ControlGroup oder dem FormBuilder.
Plunker of the issue | Plunker without modal
Sieht aus wie https://github.com/eckig/eckig/issues/6041 –