2017-03-17 3 views
0

Hallo Ich habe eine Reihe von Tasten, wie unten,Wie explizit Tasten deaktivieren Winkel

let Btns: Array<any> = [{ 
    type: "submit", 
    BtnType: "prev", 
    label: "Previous", 
    class: "btn-outline", 
    icon: "kd-back", 
    disabled: false 
}, 
{ 
    type: "submit", 
    BtnType: "next", 
    label: "Next", 
    icon: "kd-play", 
    class: "btn-text", 
    disabled: false 
}]; 

Auch ich habe zwei Variablen:

private nextBtn_disabled: boolean = false; 
private prevBtn_disabled: boolean = true; 

ich ein Sperrmerkmal, um die Tasten bin der Umsetzung. Das Verhalten ist so etwas wie dieses:

  1. i.Vj. Taste deaktiviert werden muss, wenn die Seite geladen wird
  2. nächste Taste muss deaktiviert werden, wenn treffen bestimmte Bedingung auch wenn der Benutzer klicken zurück

muss deaktiviert sein Das folgende ist mein HTML:

<div class="form-group text-center"> 
    <button *ngFor="let btn of Btns" [type]="(btn.type=='submit')?'submit':'button'" class="btn btn-icon" [ngClass]="btn.class" (click)="_btnClick(btn, _finalConfig)" [disabled]="nextBtn_disabled"> 
     <i *ngIf="btn.BtnType!='next'" [class]="btn.icon"></i> 
     <span>{{btn.label}}</span> 
     <i *ngIf="btn.BtnType=='next'" [class]="btn.icon"></i> 
    </button> 
</div> 

Wie kann ich es erreichen? Ich versuchte || Zustand und && Zustand zwischen nextBtn_disabled und prevBtn_disabled. Aber hat nicht funktioniert. Irgendwelche Ideen Jungs? Danke im Voraus.

+0

|| Die Bedingung hat nicht funktioniert, da die Schaltfläche "Zurück" standardmäßig deaktiviert ist. – blackdaemon

+0

Wenn Sie nur zwei Tasten haben, warum brauchen Sie das Array und 'ngFor'? Definieren Sie sie direkt in der HTML-Vorlage, dann haben Sie nicht die Komplexität definieren eine Schaltfläche, die zwei "Modi" hat –

+0

nein es wird viele wie der Benutzer – blackdaemon

Antwort

2

Ich würde so etwas empfehlen.

<button [disabled]="isInvalid()">Your html</button> 

isInvalid() { 
    return (checkCondition_to_be_met || clicked_on_prev_button); 
} 
+0

Pramod, kann etwas weiter erklären, wenn Sie nichts dagegen haben – blackdaemon

+0

Pramod, ich habe zwei Tasten, wie kann ich mit der Deaktivierung der Eigenschaft für jeden von ihnen mit diesem methood – blackdaemon

+0

So muss Ihr Code die folgenden Bedingungen erfüllen. Die Schaltfläche prev muss beim ersten Laden der Seite deaktiviert werden. Die Schaltfläche Weiter muss deaktiviert sein, wenn bestimmte Bedingungen erfüllt sind, wenn der Benutzer auf prev.so klickt, damit Ihre erste Bedingung erfüllt wird. Für die Schaltfläche Zurück setzen Sie [disabled] = "prev_btn_disabled", wobei prev_btn_disabled = true ist. Und um die zweite Bedingung zu erfüllen, geben Sie Ihrem [deaktiviert] eine Funktion, die automatisch nach Updates sucht, wo sich die Modelle ändern. Die Funktion gibt einen booleschen Wert zurück, indem die zu erfüllende Bedingung ausgewertet wird. –

0

-Code es wie folgt aus:

überprüfen Sie es für Ihren zweiten Punkt (nächste Taste muss deaktiviert werden, wenn bestimmte treffen Zustand auch wenn der Benutzer klicken i.Vj. muss deaktiviert sein)

Html-Code:

<div> 
<button *ngFor="let btn of btns" [disabled]="btn.disabled"  (click)="btnClick(btn,btns)">{{btn.label}}</button> 
</div> 

Fügen Sie anderen HTML-Code nach Ihren Bedürfnissen hinzu.

Komponentencode:

import { Component } from '@angular/core'; 


@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 
export class AppComponent { 


btn1 :boolean = false; 
btn2 :boolean = false; 

btns: Array<any> = [ 
    { 
     type: "submit", 
     BtnType: "prev", 
     label: "Previous", 
     class: "btn-outline", 
     icon: "kd-back", 
     disabled: this.btn1 
    }, 
    { 
     type: "submit", 
     BtnType: "next", 
     label: "Next", 
     icon: "kd-play", 
     class: "btn-text", 
     disabled: this.btn2 
    }]; 


    btnClick(btn,btns){ 

     var certain_condition = true; //put your code for any certain condition here and make it true or false. 
     if((btn.label === "Previous") || certain_condition){ 
      console.log(btns[1]); 
      btns[1].disabled = true; 
     } 

    } 

    } 

Für Ihren ersten Punkt machen "btn1: boolean = true;" Versuchen Sie, verschiedene Bedingungen entsprechend Ihren Bedürfnissen zu ändern.

Verwandte Themen