Angular 5 ngSubmit @Output 触发两次

Sam*_*gun 3 events components output angular5

定制组件

// ...

@Output() submit: EventEmitter < any > = new EventEmitter();

// ...

onFilterSubmit($event): void {
  this.submit.emit($event);
  this.formData = {
    minDate: new Date().toISOString(),
    maxDate: new Date().toISOString()
  };
}
Run Code Online (Sandbox Code Playgroud)
<form (ngSubmit)="onFilterSubmit(formData)">

    <!-- -- -->
    <button mat-button
        mat-raised-button
        [disabled]="reqsForm.form.invalid" 
        type="submit"
        color="primary">
        {{labels.submit}}
    </button>
</form>
Run Code Online (Sandbox Code Playgroud)

外部组件

// ...

onFilterSubmit($event): void {
  console.info("FORM SUBMIT", $event);
}
Run Code Online (Sandbox Code Playgroud)
<custom-component (submit)="onFilterSubmit($event)">

  <!-- -- -->

</custom-component>
Run Code Online (Sandbox Code Playgroud)

输出

FORM SUBMIT > Object

FORM SUBMIT > Object

Sam*_*gun 5

发生这种情况的原因是一个名为“提交”的事件已经可以从自定义组件外部捕获。

我通过将自定义事件名称更改为filterSubmit解决

还要注意type submit按钮上的 - 在这个用例中 - 实际上是无用的,因为默认情况下,表单中的一个按钮将是提交类型。