Mam formularz, który jest tworzony programowo przez DynamicComponentLoader::loadIntoLocation
. Kod forma jest poniżej:FormBuilder Control powodujące "Wyrażenie zmieniło się po sprawdzeniu" wyjątek
constructor (
private _builder: FormBuilder
) {
this.editForm = _builder.group({
name: ['', Validators.required],
email: ['', Validators.compose([Validators.required, Helpers.emailValidator])],
phone: [''],
phoneAlt: [''],
location: [''],
dob: [''],
bio: [''],
});
}
Zauważysz, że niektóre z tych form nie mają weryfikatorów (o ile mogę powiedzieć, to jest taki sam jak przy użyciu Validators.nullValidator
, Przetestowałem z obu) .
W moim szablonu Mam następujący kod (dla każdej kontroli):
<label for="phone">Contact Number <span *ngIf="!phone.valid">- {{e(phone)}}</span></label>
<input type="text" name="phone" id="phone" ngControl="phone" #phone="ngForm">
Pierwsza kontrola, która nie posiada walidator rzuca następujący wyjątek dwukrotnie, gdy uderza !phone.valid
częścią szablonu:
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]
w żadnym momencie jestem dotykając kontroli lub this.editForm
po początkowym stworzeniu, tak, tak daleko, jak mój kod jest zaniepokojony, nic nie powinno się zmieniać.
Jestem świadomy, że mogę stłumić błędy, dzwoniąc pod numer enableProdMode()
, ale wolę rozwiązać problem, niż go ukryć.
Edit (08 lutego): mam od próbował przesuwając zawartość modalnym do osobnej stronie, ale błędy utrzymywać. Sugerowałoby to, że problem nie jest związany ze sposobem, w jaki kreuję i ładowaniem modałów, ale raczej z ControlGroup lub FormBuilder.
Plunker of the issue | Plunker without modal
Wygląda https://github.com/kątowe/kątowe/numery/6041 –