angular
2016-04-22 10 views 1 likes 
1

Ich möchte wissen, wie Sie die Schaltfläche abhängig vom Wert der lokalen Vorlage varibale deaktivieren. hier ist mein Code -Aktion basierend auf der lokalen Variable Angular2

<input type="text" #name>  
<button [disabled]='name.value' (click)='getvalue()'>Demo</button> 

i die Schaltfläche disbale wollen, wenn der Wert von #Name Änderung, auch, wie der Wert von #name in der Klasse (Komponentenklasse) zu bekommen?

hier ist plnkr für die gleichen http://plnkr.co/edit/3ZHS7jfQIVl2WVsK8BEb?p=preview

Antwort

2

Angular nicht Änderungserkennung ausgeführt werden, da kein Ereignis relevant Angular abgefeuert wird. Wenn Sie auf ein Ereignis binden dann ändern Angular Läufe Erkennung und die Bindung Werke

Hinzufügen (input)="null" wie

<input type="text" #name (input)="null"> 

macht Ihr Beispiel Arbeit.

Plunker example

+0

ich will eigentlich Taste deaktivieren, wenn Eingabefeld leer ist, sonst Taste deaktivieren flase. wie bekommt man das? Was ist die Rolle '(Eingabe)' hier? –

+0

'(input) =" button.disabled =! $ Event.target.value "' –

+0

aber dies funktioniert nur, wenn Benutzer das Eingabefeld füllen, nicht zum ersten Mal. Ich meine, wenn Eingabefeld ist unberührt Schaltfläche ist immer noch nicht deaktiviert, was falsch ist. –

0

Nach gefunden Suche Eine Alternative,

diese does tatsächlich Arbeit, weil Winkeländerungserkennung funktioniert nur, wenn alle Ereignis ausgelöst wird, aber hier in diesem Fall lokaler Variable jedes Ereignis does't Feuer, Um Änderungserkennung vorzunehmen, müssen wir ein beliebiges Ereignis zum Eingabefeld hinzufügen. wir können es tun, entweder durch die Funktion aufrufen oder alternativly können wir es durch den Aufruf einfach keyup Ereignis auf Eingabefeld wie folgt tun -

<input type="text" #name (keyup)='name.value' /> 

<button [disabled]='!name.value' (click)='getvalue(name.value)' class="btn btn-md btn-primary">Demo</button> 
Verwandte Themen