Angular 重置形式的formGroupDirective的用法-角度反应形式
我试图找到最好的方法来重新设置角度反应形式。我对重置被动表单有点困惑,无法找到哪种方法适用于模板驱动的表单,哪种方法适用于被动表单。 现在我已经使用“formGroupDirective”来重置,但我得到了如下控制台错误。 这就是我使用formGroupDirective进行重置的方式 模板文件:Angular 重置形式的formGroupDirective的用法-角度反应形式,angular,angular-reactive-forms,Angular,Angular Reactive Forms,我试图找到最好的方法来重新设置角度反应形式。我对重置被动表单有点困惑,无法找到哪种方法适用于模板驱动的表单,哪种方法适用于被动表单。 现在我已经使用“formGroupDirective”来重置,但我得到了如下控制台错误。 这就是我使用formGroupDirective进行重置的方式 模板文件: 如果您正在处理被动表单,那么应该已经在组件中为表单定义了一个FormGroup。使用重置。在这种情况下,没有理由使用模板引用变量 这是我的一个: ngOnInit(): void {
如果您正在处理被动表单,那么应该已经在组件中为表单定义了一个FormGroup。使用重置。在这种情况下,没有理由使用模板引用变量 这是我的一个:
ngOnInit(): void {
this.productForm = this.fb.group({
productName: ['', [Validators.required,
Validators.minLength(3),
Validators.maxLength(50)]],
productCode: ['', Validators.required],
tags: this.fb.array([]),
description: ''
});
}
displayProduct(product: Product): void {
if (this.productForm) {
this.productForm.reset();
}
// ...
}
我在属性productForm中定义表单组,然后使用该属性调用reset
每次用户选择要编辑的不同产品时,都会调用My displayProduct方法。它将重置表单并使用所选产品的数据重新填充表单
此语法:
#formDirective="formGroupDirective"
是散列所指示的模板引用变量。这通常在模板驱动的表单中用于访问表单组,因为表单组在代码中的定义与反应式表单不同
被动表单中的FormGroupDirective将HTML中的表单元素绑定到组件代码中定义的表单组
我的看起来像这样:
<form novalidate
(ngSubmit)="saveProduct()"
[formGroup]="productForm">
@ViewChild(FormGroupDirective) formRef: FormGroupDirective;
请注意[formGroup]如果您正在处理被动表单,那么您应该已经在组件中为表单定义了一个formGroup。使用重置。在这种情况下,没有理由使用模板引用变量 这是我的一个:
ngOnInit(): void {
this.productForm = this.fb.group({
productName: ['', [Validators.required,
Validators.minLength(3),
Validators.maxLength(50)]],
productCode: ['', Validators.required],
tags: this.fb.array([]),
description: ''
});
}
displayProduct(product: Product): void {
if (this.productForm) {
this.productForm.reset();
}
// ...
}
我在属性productForm中定义表单组,然后使用该属性调用reset
每次用户选择要编辑的不同产品时,都会调用My displayProduct方法。它将重置表单并使用所选产品的数据重新填充表单
此语法:
#formDirective="formGroupDirective"
是散列所指示的模板引用变量。这通常在模板驱动的表单中用于访问表单组,因为表单组在代码中的定义与反应式表单不同
被动表单中的FormGroupDirective将HTML中的表单元素绑定到组件代码中定义的表单组
我的看起来像这样:
<form novalidate
(ngSubmit)="saveProduct()"
[formGroup]="productForm">
@ViewChild(FormGroupDirective) formRef: FormGroupDirective;
请注意[formGroup]如果您使用的是被动表单,您可以简单地使用formGroup上的reset方法来清除所有表单值,并再次将控件标记为原始控件,正如前面所指出的那样。但是您也可以使用FormGroupDirective来使用resetForm,因为这会将表单的submitted属性标记为false,这是常规reset方法无法做到的 如果使用Angular材质,这尤其有用,因为默认的ErrorStateMatcher将检查表单是否已作为显示表单错误消息的条件之一提交。您可以这样使用它:
<form novalidate
(ngSubmit)="saveProduct()"
[formGroup]="productForm">
@ViewChild(FormGroupDirective) formRef: FormGroupDirective;
然后:
this.formRef.resetForm();
无需向HTML添加任何内容
有关更多信息:如果您使用的是被动表单,您只需使用表单组上的重置方法来清除所有表单值,并再次将控件标记为原始控件,正如前面所指出的那样。但是您也可以使用FormGroupDirective来使用resetForm,因为这会将表单的submitted属性标记为false,这是常规reset方法无法做到的 如果使用Angular材质,这尤其有用,因为默认的ErrorStateMatcher将检查表单是否已作为显示表单错误消息的条件之一提交。您可以这样使用它:
<form novalidate
(ngSubmit)="saveProduct()"
[formGroup]="productForm">
@ViewChild(FormGroupDirective) formRef: FormGroupDirective;
然后:
this.formRef.resetForm();
无需向HTML添加任何内容
有关详细信息:在被动表单中,this.productFrom.reset不会将被动表单重置为原始状态。是的,它会重置表单和控件状态属性:原始、有效、脏等。它不会清除或重置表单值。。。只是国家财产。它对您不起作用吗?它会重置窗体及其值,但在触摸forn并使其无效后,在反应窗体中,this.productFrom.reset不会将反应窗体重置为原始状态。是的,它会重置窗体和控件状态属性:原始、有效、脏等。它不会清除或重置窗体值。。。只是国家财产。它对你不起作用吗?它确实重置了表单及其值,但之后forn被触摸并无效,对我起作用。我喜欢它,因为它是最小的。为我工作。我喜欢它,因为它是最小的。