2016-06-27 6 views

Antwort

29

Fand heraus, wie es geht:

  • Trigger mit <formname>.ngSubmit.emit()
  • get Form Status mit <formname>.form.valid

Beispiel einreichen:

<form (ngSubmit)="save()" #documentEditForm="ngForm"> 
... 
</form> 

<button class="btn-save button primary" 
(click)="documentEditForm.ngSubmit.emit()" 
[disabled]="!documentEditForm.form.valid">SAVE</button> 
+0

ngSubmit ist nicht definiert –

+1

@VievChild ('documentEditForm') documentEditForm: FormGroupDi rekativ; auch benötigt –

+2

Wenn ich emit dann auch meine ngForm's submited (Boolean-Eigenschaft) wird nicht auf wahr. Kannst du mir bitte helfen. –

36

Die richtige Art und Weise zu tun, ist tatsächlich

<form (ngSubmit)="save()" id="ngForm" #documentEditForm="ngForm"> 
    ... 
</form> 

<button class="btn-save button primary" form="ngForm" [disabled]="!documentEditForm.form.valid"> 
    SAVE 
</button> 

Das Formular muss eine ID haben id="example-form" und die Submit-Button eine passende ID in der form="example-form"

+6

Dies sollte die akzeptierte Antwort sein. – choxnox

+2

Ich möchte nur noch eine Sache hinzufügen. Es scheint, als wäre eckig nicht daran interessiert, dass die Schaltfläche deaktiviert wird, sobald sie außerhalb der Form ist - d. H., Wenn Sie die Eingabetaste auf einem Eingabeelement drücken, wird sie immer noch versuchen, sie einzureichen. Ich bin mir nicht sicher, ob dies wirklich ein Fehler in Angular selbst ist oder es eine andere Lösung gibt. Ein schneller Workaround dafür wäre einfach zu gehen (ngSubmit) = "form.valid && save()" – Yodacheese

+1

fyi IE & Edge unterstützen nicht das Attribut 'form' auf 'button', so dass dies nicht funktioniert (so viel ich weiss). – BOb

1

Ein Trick, der für mich gearbeitet mit

  • Reactive Forms
  • Angular2
  • inkl. IE

war:

<!-- real button will simulate click on invisible button (cf. form) --> 
<button onclick="document.getElementById('hiddenSaveButtonForMicrosoftWithLove').click()"> 
    The Real Button outside forms 
</button> 

<form> 
    <!-- will be called in the background and is never visible --> 
    <button id="hiddenSaveButtonForMicrosoftWithLove" type="submit" style="display: none;">hiddenSaveButtonForMicrosoftWithLove</button> 
</form> 
1

Wenn Sie Reactive Forms verwenden, um die formGroup ungültige Eigenschaft verwenden die Senden-Schaltfläche deaktivieren:

<button 
    form="ngForm" 
    [disabled]=" editor.invalid>Enviar</button> 

...

<form [formGroup]="editor" id="ngForm" (ngSubmit)="save()" novalidate > 
... 
</form> 
Verwandte Themen