Angular 5 ngSubmit @Output 触发两次
Angular 5 ngSubmit @Output fires twice
自定义组件
// ...
@Output() submit: EventEmitter < any > = new EventEmitter();
// ...
onFilterSubmit($event): void {
this.submit.emit($event);
this.formData = {
minDate: new Date().toISOString(),
maxDate: new Date().toISOString()
};
}
<form (ngSubmit)="onFilterSubmit(formData)">
<!-- -- -->
<button mat-button
mat-raised-button
[disabled]="reqsForm.form.invalid"
type="submit"
color="primary">
{{labels.submit}}
</button>
</form>
外部组件
// ...
onFilterSubmit($event): void {
console.info("FORM SUBMIT", $event);
}
<custom-component (submit)="onFilterSubmit($event)">
<!-- -- -->
</custom-component>
输出
FORM SUBMIT > Object
FORM SUBMIT > Object
发生这种情况的原因是一个名为 "submit" 的事件
已经可以从 自定义组件 .
外部捕获
我通过将自定义事件名称更改为 filterSubmit
来解决
另请注意,按钮上的 type submit
- 在本用例中 - 实际上是无用的,因为默认情况下,表单中的 one 按钮将属于提交类型.
自定义组件
// ...
@Output() submit: EventEmitter < any > = new EventEmitter();
// ...
onFilterSubmit($event): void {
this.submit.emit($event);
this.formData = {
minDate: new Date().toISOString(),
maxDate: new Date().toISOString()
};
}
<form (ngSubmit)="onFilterSubmit(formData)">
<!-- -- -->
<button mat-button
mat-raised-button
[disabled]="reqsForm.form.invalid"
type="submit"
color="primary">
{{labels.submit}}
</button>
</form>
外部组件
// ...
onFilterSubmit($event): void {
console.info("FORM SUBMIT", $event);
}
<custom-component (submit)="onFilterSubmit($event)">
<!-- -- -->
</custom-component>
输出
FORM SUBMIT > Object
FORM SUBMIT > Object
发生这种情况的原因是一个名为 "submit" 的事件 已经可以从 自定义组件 .
外部捕获我通过将自定义事件名称更改为 filterSubmit
来解决另请注意,按钮上的 type submit
- 在本用例中 - 实际上是无用的,因为默认情况下,表单中的 one 按钮将属于提交类型.