Angular2 비활성화 버튼


113

angular2 에서 [disable]속성이 있는 버튼을 비활성화 할 수 있다는 것을 알고 있습니다 . 예를 들면 다음과 같습니다.

<button [disabled]="!isValid" (click)="onConfirm()">Confirm</button>

하지만 [ngClass]또는 사용하여 할 수 [ngStyle]있습니까? 이렇게 :

<button [ngStyle]="{disabled : !isValid}" (click)="onConfirm()">Confirm</button>

감사.


1
여기에 같은 대한 plnkr을하고있다 plnkr.co/edit/MW3vT4XscWcKrDdAwBoE?p=preview
Pardeep 자이나교

답변:


173

최신 정보

궁금하네요. [disabled]Angular 2에서 제공 하는 속성 바인딩 을 사용하지 않는 이유는 무엇 입니까? 이 상황을 처리하는 올바른 방법입니다. isValid구성 요소 방법을 통해 수표를 이동할 것을 제안합니다 .

<button [disabled]="! isValid" (click)="onConfirm()">Confirm</button>

시도한 문제는 아래에 설명되어 있습니다.

기본적으로 ngClass여기에서 사용할 수 있습니다. 그러나 클래스를 추가해도 이벤트 발생을 제한하지는 않습니다. 유효한 입력으로 이벤트를 발생 click시키기 위해서는 이벤트 코드를 아래와 같이 변경해야 합니다. 따라서 onConfirm필드가 유효 할 때만 해고됩니다.

<button [ngClass]="{disabled : !isValid}" (click)="isValid && onConfirm()">Confirm</button>

여기에서 데모


버튼에 ngClass allready를 추가하여 비활성화 된 모양이 필요합니다. [disabled] 방식이 선호되는 이유는 무엇입니까?
Nir Schwartz

@NirSchwartz 그것은 .. 선택 CSS 규칙을 적용 받게됩니다 한 번에 모두 일을 할 것이기 때문에 button[disabled]기반 및 비활성화 이벤트를 제한 할 선택 click에 .. 버튼을 해고하는 이벤트를 ngClass나는 같이 당신이 자신에 의해 그것을 처리 할 필요가 클래스 일 위의 대답은 ..
판 카즈 Parkar

사람들이 [disabled]가 아닌 [attr.disabled]를 사용하려는 이유는 각도 FormControl의 [disabled]를 동적으로 설정할 수 없기 때문입니다. 여기서 문제입니다 github.com/angular/angular/issues/11271
davyzhang

1
템플릿 바인딩에서 메서드를 호출하면 안됩니다. [disabled]="!isValid"
Tom

3
Ahhaa .. 메서드에 변수 참조 만 있으면 괜찮습니다. 함수 내부에 복잡한 논리가 있으면 선호하지 않습니다. 맞습니다.이 경우 isValidUI에서 플래그를 직접 호출 할 수 있습니다
Pankaj Parkar

39

다음을 권장합니다.

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

4
틱 / 사이클마다 호출되므로 html에서 함수 호출을 피하는 것이 더 낫지 않습니까?
John



5

사용 ngClass안 함으로 잘못된 형태의 버튼 자사의 제공 붙박이 활성화하고 형태가 여분의 노력 / 로직을 수행하지 않고 각각 유효하고 유효하지 않은 경우 버튼을 비활성화 할 수 있습니다 Angular2 좋은 방법이 아닙니다.

[disabled] 양식이 유효하면 활성화되고 양식이 유효하지 않으면 자동으로 비활성화되는 것과 같은 모든 작업을 수행합니다.

예 참조 :

<form (ngSubmit)="f.form.valid" #f="ngForm" novalidate>
<input type="text" placeholder="Name" [(ngModel)]="txtName" name="txtname" #textname="ngModel" required>
<input type="button" class="mdl-button" [disabled]="!f.form.valid" (click)="onSave()" name="">


3

아래 코드가 도움이 될 수 있습니다.

<button [attr.disabled]="!isValid ? true : null">Submit</button>

이 이후 좋은 해결책이 아니다 <button disabled="">또는 <button disabled="false">여전히 대부분의 브라우저에서 비활성화 된 버튼과 같은 처리
BillyTom

2

클릭 이벤트와 함께 disabled를 사용해 보았습니다. 아래는 스 니펫이며 허용되는 답변도 완벽하게 작동했습니다.이 답변을 추가하여 비활성화 및 클릭 속성과 함께 사용할 수있는 방법의 예를 제공합니다.

<button (click)="!planNextDisabled && planNext()" [disabled]="planNextDisabled"></button>

2

반응 형 양식을 사용 중이고 양식 컨트롤과 관련된 일부 입력을 비활성화하려면이 disabled논리를 코드에 배치하고 yourFormControl.disable()또는yourFormControl.enable()


2

이것이 가장 쉬운 방법이라고 생각합니다

<!-- Submit Button-->
<button 
  mat-raised-button       
  color="primary"
  [disabled]="!f.valid"
>
  Submit
</button>

1
 <button [disabled]="this.model.IsConnected() == false"
              [ngClass]="setStyles()"
              class="action-button action-button-selected button-send"
              (click)= "this.Send()">
          SEND
        </button>

.ts 코드

setStyles() 
{
    let styles = {

    'action-button-disabled': this.model.IsConnected() == false  
  };
  return styles;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.