我有两个表单,它们在提交时触发验证,然后才显示给用户。但是,我需要同时在两个表单上触发此提交,以便显示需要填写的字段。
现在我有类似的东西
<form [formGroup]="formGroup" #myForm="ngForm" ngForm (ngSubmit)="onSubmit()" *ngIf="formAssemblyCompleted; else loader>
...
</form>
<form [formGroup]="form2" class="mb-5">
</form>
<button class="btn btn_orange" type="submit (click)="myForm.ngSubmit.emit(true)">
Submit
</button>
并在组件中
@ViewChild('myForm') myForm: NgForm;
绑定(bind)到
ngSubmit
的函数被正常调用,但是 submitted
属性(property)在 myForm
不会将其状态更改为 true
最佳答案
这个问题很久以前就完成了,但我有答案。 myForm.ngSubmit.emit(true)
只会触发 EventEmitter 来调用传递给 (ngSubmit)="onSubmit()"
的函数.查看代码,我注意到该函数变成了 submitted
正确的是 onSubmit($event)
.它还会发出 ngSubmit
.这是代码的摘录。
onSubmit($event: Event): boolean {
(this as {submitted: boolean}).submitted = true;
syncPendingControls(this.form, this._directives);
this.ngSubmit.emit($event);
return false;
}
https://github.com/angular/angular/blob/9.1.11/packages/forms/src/directives/ng_form.ts#L288-L301所以在你的情况下,你需要这样做:
<button class="btn btn_orange" type="submit (click)="myForm.onSubmit($event)">
Submit
</button>
关于angular - ngSubmit.emit() 不会改变 formGroup 的提交属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55275797/