【发布时间】:2021-04-27 19:04:07
【问题描述】:
我有一个使用 ControlValueAccessor 的带有子表单的表单
profile-form.component.ts
form: FormGroup;
this.form = this.formBuilder.group({
firstName: [],
lastName: ["", Validators.maxLength(10)],
email: ["", Validators.required]
});
get lastNameControl() {
return this.form.controls.lastName;
}
initForm() {
...
this.form.patchValue({
firstName: "thompson",
lastName: "vilaaaaaaaaaaaaaaaaaaaa",
email: "abc@gmail.com"
});
...
}
profile-form.component.html
<label for="last-name">Last Name</label>
<input formControlName="lastName" id="last-name" />
<div *ngIf="lastNameControl.touched && lastNameControl.invalid" class="error">
last name max length is 10
</div>
问题:
初始数据已加载到表单,但未触发验证(例如:未验证字段姓氏)。我必须触摸该字段,然后验证开始工作。
如何在patchValue 完成后立即触发验证。
请参考代码:https://stackblitz.com/edit/angular-wg5mxz?file=src/app/app.component.ts
欢迎提出任何建议。
【问题讨论】:
-
补丁后可以调用this.form.updateValueAndValidity()
-
@MikeOne 不需要调用updateValueAndValidity(),pathValue方法自己调用。
标签: angular typescript validation angular-reactive-forms