Angular 角形复位问题

Angular 角形复位问题,angular,angular-forms,Angular,Angular Forms,我是Angular的新手,我有一个FromGroup: inputData: FormGroup; ..... this.inputData = this.formBuilder.group({ vorname: ['', [Validators.required]], nachname: ['', [Validators.required]], ort: ['', [Validators.required]], anschri

我是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();
}
现在,当我单击按钮时,表单中的输入数据将被清除,但由于所有控件都是必需的,因此表单如下所示:

(ngSubmit)="onClearFormContent()"
@ViewChild("userForm") userForm: NgForm;

我不想因为内容为空而将输入字段标记为无效,因为整个表单都已重新加载

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

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>

尝试调用
this.inputData.markAsUntouched()而不是在重置表单后将错误设置为null。此外,请尝试调用
this.userForm.resetForm()
,而不是
this.inputData.reset()。为了让这一切变得容易-
将表单声明为NgForm,如下所示:

(ngSubmit)="onClearFormContent()"
@ViewChild("userForm") userForm: NgForm;
在你的模板中

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

....

它对您有帮助吗@不幸的是,埃米利安没有感谢你,但这一次我已经尝试过了,没有帮助更新我的答案。试着这样做,它可能会有助于将“resetForm”设置为典型的“FormGroup”nicht vorhanden。resetForm对于FormGroupAch是不可访问的,它起作用了。我用答案更新我的问题。谢谢!