2016-11-01 13 views
0

フォームが無効なときにstopPropagation()によってコールバックdoSearch()が発生しないようにする必要があります。角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を追加します。それは伝播を止める。

関連する問題