2016-05-18 4 views
0

Ich habe ein Angular 2 Formular, das Daten asynchron an den Server übermittelt. Ich muss den Endbenutzern ein gewisses visuelles Feedback geben, während ihr Browser darauf wartet, vom Server zu hören. Daher möchte ich die blaue Schaltfläche "Senden" in eine ausgegraute Schaltfläche "Bitte warten ..." ändern. Ich entschied, dass der einfachste Weg das zu tun wäre, zwei Knöpfe zu haben und einen zu verstecken, wenn der andere sichtbar ist.Hide Submit Button während des Wartens auf Server (Bindung funktioniert nicht?)

Ich dachte, ich könnte dies nur in meinem Modell setzen:

isPending: boolean = false; 

Und das auf meiner Seite:

<button [hidden]="!isPending" type="submit" class="btn btn-primary">Register</button> 
<button [hidden]="isPending" class="btn btn-primary" disabled>Please wait...</button> 

Aber beide Tasten sind immer sichtbar, unabhängig von dem Wert IsPending wird auf .

Was ist der idiomatische Weg, um das zu erreichen, wonach ich suche?

Antwort

1

Ersetzen Sie einfach [hidden] mit *ngIf wie so:

<button *ngIf="!isPending" type="submit" class="btn btn-primary">Register</button> 
<button *ngIf="isPending" class="btn btn-primary" disabled>Please wait...</button> 

Das Problem ist, dass die class Richtlinien in Ihrer Schaltfläche Tags, um die hidden Direktive zur Laufzeit außer Kraft setzen.

Plunker zum Beispiel Nutzung

+0

Vielen Dank für Ihre Antwort rinukkusu, jetzt nur noch die 'Register' Taste zeigt, ist. Wenn Sie jedoch den Wert von "isPending" ändern, wird die Sichtbarkeit der beiden Schaltflächen nicht geändert. Irgendwelche Vorschläge würden geschätzt werden. –

+0

Scheint zu arbeiten - überprüfen Sie die [Plunker] (http://plnkr.co/edit/bFXXcjxYGhWcRyTM9KIO?p=preview) – rinukkusu

+1

Danke, Sie waren auf dem Geld. Ich hatte einen dummen Fehler woanders - ich denke, das bedeutet seine Zeit für mich, eine Pause zu machen :). Vielen Dank! –

Verwandte Themen