Angular 表格重置问题

Angular Form reset issue

我是 Angular 的新人,我有一个 FromGroup:

inputData: FormGroup;

.....

this.inputData = this.formBuilder.group({
        vorname: ['', [Validators.required]],
        nachname: ['', [Validators.required]],
        ort: ['', [Validators.required]],
        anschrift: ['', [Validators.required]],
        geburtsdatum: ['', [Validators.required]],
        gueltigAb: ['', [Validators.required]]
    });

我有一个按钮可以用这个方法清除表单内容:

protected onClearFormContent() {
    this.inputData.reset();
}

现在,当我单击按钮时,表单中的输入数据被清除,但由于所有控件都是强制性的,表单如下所示:

我不希望我的输入字段因为内容为空而被标记为无效,因为整个表单已重新加载。

经过一段时间的搜索,我找到了这个解决方案:

protected onClearFormContent() {
    this.inputData.reset();
    Object.keys(this.inputData.controls).forEach(key => {
        this.inputData.controls[key].setError(null);
    });
}

但是之后验证不起作用,如果我将其中一个必填字段留空也没关系,它不会被标记为无效。

我尝试使用已修改/未修改的值,但没有帮助。

有人可以帮忙解决这个问题吗?

提前致谢!


解决方案

好的,@ammad-hassan 的解决方案非常有效。 我只需要更改我的按钮:

<button mat-button (click)="onClearFormContent()">Formular leeren</button>

收件人:

<button mat-button type="submit">Formular leeren</button>

然后像这样调用我的函数:

(ngSubmit)="onClearFormContent()"

尝试调用 this.inputData.markAsUntouched();,而不是在重置表单后将错误设置为 null。此外,尝试调用 this.userForm.resetForm() 而不是 this.inputData.reset()。使这个易于访问- 像这样将表单声明为 NgForm:

@ViewChild("userForm") userForm: NgForm;

并在您的模板中

<form #userForm="ngForm" (ngSubmit)="onSaveUser()" novalidate>
    ....
</form>