2016-09-05 4 views
4

ich ein Eingabefeld auf der folgenden Basis haben:angular2 nicht Eingang deaktiviert basierend auf wahr oder falsch Bedingung

Wenn eine Änderung Radio Ich sehe, dass sich der Wert ändert, um wahr für falsch:

<pre> {{model_parameters_general.estimationmethod=='ew'}} </pre> 

Also wow, warum wird die Eingabebox auf Basis von True für False deaktiviert?

<input [disabled]="model_parameters_general.estimationmethod=='ew'" [(ngModel)]="model_parameters_general.lambda" 
          formControlName="lambda" type="text" class="form-control"> 

EDIT:

In den Protokollen ich diese:

It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true 
     when you set up this control in your component class, the disabled attribute will actually be set in the DOM for 
     you. We recommend using this approach to avoid 'changed after checked' errors. 

    Example: 
    form = new FormGroup({ 
    first: new FormControl({value: 'Nancy', disabled: true}, Validators.required), 
    last: new FormControl('Drew', Validators.required) 
    }); 

So verwende ich ein reaktives von in rc6.

stelle ich die anfängliche disable auf die folgende Liste:

this.myForm = fb.group({ 
       lambda: new FormControl({value: .99, disabled: true}, Validators.required), 

     }) 

So schalte ich auf der Grundlage eines Toggle eines Funkeingangs?

+0

wenn Sie das Tag-Formular verwenden, sollten Sie Attributnamen für Ihre Eingabe als auch –

Antwort

6

Für boolean Eigenschaften, die Sie brauchen, um sie zu null setzen sie

entfernt zu bekommen
<input [disabled]="model_parameters_general.estimationmethod=='ew' ? true : null" [(ngModel)]="model_parameters_general.lambda" 
    formControlName="lambda" type="text" class="form-control"> 
+0

Ich verstehe nicht die letzte hinzufügen Satz deiner Frage. Vielleicht ein fehlendes "wie" oder etwas? –

+0

In der Form html [disable] funktioniert nicht. Standardmäßig ist es immer aktiviert. Die einzige Möglichkeit, die ich deaktivieren könnte, ist das Deaktivieren in FormControl. Jetzt muss ich Ereignisse überwachen, die ich denke, this.myForm.valueChanges subscribe – Tampa

+0

Zu welchem ​​Zweck möchten Sie Ereignisse überwachen? –

3

Es scheint in rc.6 sie die Fähigkeit entfernt Eingänge dynamisch Bindung auf einer Vorlage zu deaktivieren, wenn reaktive Formen verwenden. Sie müssen die Änderungen überwachen und .disable() auf der formControl anrufen, die Sie jetzt deaktivieren möchten. Ich bevorzuge eher die alte Art, Dinge zu tun und hoffe, dass sie es zurückbringen oder eine ebenso nützliche Lösung.

Chime in diesem related github issue.

3

Versuchen Sie den folgenden Code.

setControl(name: any, Isenable: boolean): void { 
    let ctrl = this.checkInForm.controls[name]; 
    console.log(ctrl); 
    Isenable ? ctrl.enable() : ctrl.disable(); 
} 

Aufruf Statement

this.setControl('ctrl name', true); // enbale it 
    this.setControl('ctrl name', false); // disable it 

Dank Glücklich Coding!

1

Versuchen attr.disabled, statt deaktiviert

<input [attr.disabled]="disabled?'':null"/>

StackOverflow Answer

Verwandte Themen