在 Angular 1(1.5)中,表单控制器有一个$setSubmitted()方法,允许您以编程方式将.$submitted标志设置为 true。
$setSubmitted()
.$submitted
我如何通过 NgForm 对象在 2 中执行此操作?我不想使用模板,又名(ngSubmit)=""。
(ngSubmit)=""
我试过<formname>.ngSubmit.emit(),但它没有将.submitted设置为 true。
<formname>.ngSubmit.emit()
.submitted
ngSubmit实际上是一个事件发射器(一个@Output()绑定),它将在提交表单后通知您 - 它通过在主机表单元素上侦听 DOM 事件来提交。
ngSubmit
@Output()
因此,即使您不使用ngSubmit,如果用户单击表单中的提交按钮,表单仍将被“提交”。
您可以使用onSubmit方法 e.g 手动将表单提交标志设置为true。通过按钮
onSubmit
true
<button type="button" (click)="theForm.onSubmit($event)">Submit</button>
..但是根据我对 Angular 表单的体验,需要手动设置它是非常不寻常的(ngForm指令和ngSubmit事件发射器应该是管理表单所需的全部内容)。你有什么理由需要吗?
ngForm
要点击表格之外的按钮提交表格,可以使用相同的方法。创建表单时,为表单分配一个 Reference 变量
<form name = "myform" (ngSubmit)= "SubmitForm()" #formVar = "ngForm">.....</form>
现在我们可以在整个 html 中使用这个**“formVar”**来直接访问表单。对于提交单击窗体外的按钮(使用角形的 ngSubmit 指令),请使用此。
<button (click)= "formVar.onSubmit($event)"> Submit </button>
我正在做一个解决方法:
<form #form="ngForm" [formGroup]='toiletForm' [class.submitted]='submitted'></form>
组件道具:
submitted: boolean;
.less:
form.submitted input.ng-invalid { border: solid 2px #fa787e !important; }
3 回答
ngSubmit
实际上是一个事件发射器(一个@Output()
绑定),它将在提交表单后通知您 - 它通过在主机表单元素上侦听 DOM 事件来提交。因此,即使您不使用
ngSubmit
,如果用户单击表单中的提交按钮,表单仍将被“提交”。您可以使用
onSubmit
方法 e.g 手动将表单提交标志设置为true
。通过按钮..但是根据我对 Angular 表单的体验,需要手动设置它是非常不寻常的(
ngForm
指令和ngSubmit
事件发射器应该是管理表单所需的全部内容)。你有什么理由需要吗?要点击表格之外的按钮提交表格,可以使用相同的方法。创建表单时,为表单分配一个 Reference 变量
<form name = "myform" (ngSubmit)= "SubmitForm()" #formVar = "ngForm">.....</form>
现在我们可以在整个 html 中使用这个**“formVar”**来直接访问表单。对于提交单击窗体外的按钮(使用角形的 ngSubmit 指令),请使用此。
我正在做一个解决方法:
组件道具:
.less: