2016-10-19 3 views
1

Für jedes Formular in Angular 2.0.1, wann immer ich Return drücken oder auf die Schaltfläche Senden klicken, wird der ngSubmit Ausgang zweimal ausgelöst. Ich bin auch schon die FormsModule in dem Anwendungsmodul:Formulare feuern ngSubmit zweimal auf Angular 2.0.1

@NgModule({ 
    imports: [ 
    BrowserModule, 
    HttpModule, 
    FormsModule, 
    routing 
    ], 
    declarations: [ 
    // ... 
    ], 
    providers: [ 
    // ... 
    ], 
    bootstrap: [AppComponent] 
}) 
export class AppModule {} 

Ich habe versucht, einige Antworten (wie this eins) zu folgen, aber disableDeprecatedForms und provideForms seit RC6 entfernt. Ich habe auch versucht, die DeprecatedFormsModule zu importieren, aber es scheint auch entfernt worden zu sein.

Was soll ich tun, damit die ngSubmit nicht zweimal ausgelöst wird?

UPDATE:

ich nicht die Vorlage dachte in diesem Fall wichtig wäre, da es sich um ein bekanntes Problem ist und es geschieht für jede Form in der Anwendung, aber hier folgen eine der Formen als Beispiel (gezupft unnötiger Klassen und Tags):

<form (ngSubmit)="login(user)"> 
    <input [(ngModel)]="user.username" name="username" type="email" id="username" required> 
    <label for="username">Email</label> 

    <input [(ngModel)]="user.password" name="password" type="password" id="password" required> 
    <label for="password">Password</label> 

    <button> 
    Submit 
    </button> 
</form> 
+0

Formularcode in HTML anzeigen, einschließlich Schaltfläche. – micronyks

+0

können Sie Ihr Formular zweimal zuerst am Formular-Tag und zweitens auf der Schaltfläche mit dem Namen senden senden es einmal senden oder entweder Sie Code –

+0

Vielen Dank für Ihre Kommentare, ich habe nur die Vorlage für eines der Formulare enthalten. – mrodrigues

Antwort

0

nach einigen einigen Kommentaren habe ich versucht, den Fehler in einem Plunker nur zu reproduzieren, zu erkennen, dass das Problem etwas ganz anderes war. Was zweimal gefeuert wurde, war nicht die ngSubmit, sondern die HTTP-Anfrage.

Ich wurde zweimal mit dem gleichen http.post(args), der abonnieren möchte, was passiert, ist, dass ich .share() anrufen müssen, damit es nicht für jeden abonnieren (https://stackoverflow.com/a/37241863/2908285) ausgeführt werden.

Verwandte Themen