2016-11-01 74 views
0

stopPropagation()應該阻止表單無效時觸發doSearch()的回調。Angular 2無法阻止ngSubmit傳播

<form 
    [dirtyFieldsOnSubmit]="form" 
    (ngSubmit)="doSearch()" 
    #form="ngForm"></form> 

指令代碼:

import {Directive, Input, HostListener} from '@angular/core'; 
import {NgForm} from '@angular/forms'; 

@Directive({ selector: '[dirtyFieldsOnSubmit]' }) 
export class DirtyFieldsOnSubmitDirective { 
    @Input('dirtyFieldsOnSubmit') form: NgForm; 
    constructor() { 
    } 
    @HostListener('submit', ['$event']) 
    onSubmit(event) { 
    if(!this.form.valid) { 
     for (var i in this.form.controls) { 
     this.form.controls[i].markAsDirty(); 
     } 
     //event.stopPropagation() not working 
    } 
    } 
    constructor() { 
    } 
} 
+0

onSubmit(){} //在移除事件後嘗試 – Manish

+0

您能解釋一下好嗎? – Baconbeastnz

回答

0

在你的函數結束時只需添加return false。這阻止了傳播。