gpt4 book ai didi

Angular- react 形式 : How to validate fields after patchValue

转载 作者:行者123 更新时间:2023-12-05 06:01:13 32 4
gpt4 key购买 nike

我有一个使用 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

如有任何建议,我们将不胜感激。

最佳答案

To prevent the validator from displaying errors before the user has a chance to edit the form, you should check for either the dirty or touched states in a control.

When the user changes the value in the watched field, the control is marked as "dirty".When the user blurs the form control element, the control is marked as "touched".

你应该从你的 *ngIf 中删除 lastNameControl.touched

检查 https://angular.io/guide/form-validation了解更多信息

关于Angular- react 形式 : How to validate fields after patchValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67281326/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com