angular2에서 입력을 비활성화하는 방법


123

is_edit = true비활성화하려면 ts 에서 ...

<input [disabled]="is_edit=='false' ? true : null" id="name" type="text" [(ngModel)]="model.name" formControlName="name" class="form-control" minlength="2">

단순히 true또는 기반으로 입력을 비활성화하고 싶습니다 false.

나는 다음을 시도했다 :

[disabled]="is_edit=='false' ? true : null"
[disabled]="is_edit=='true'"
[disabled]="is_edit"

10
이미이 질문을했고 이미 답변을 받았지만 질문을 삭제했습니다. 다시 브라우저 콘솔을 열어 오류를 확인하고 수정하면 (즉, formControlName이 아닌 이름 사용) 작동합니다. plnkr.co/edit/al2IkGkaZKpdLKKTfvKh?p=preview
JB Nizet

여기서 진짜 문제는 템플릿 기반 양식과 반응 양식을 혼합하고 있다는 것입니다. 둘 중 하나만 사용하십시오. @ AJT_82에 정답이 있습니다.
adam0101

답변:


317

attr.disabled대신을 사용해보십시오.disabled

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

5
요소에 attr을 추가하지 않기 위해 attr 값을 null로 설정하면-해킹처럼 보이지만 실제로는 작동하며, 나중에 생각해 보면 그럴 수도 있습니다.
c69 nov.

2
disabled동일로 true또는false
Belter

18
실제로 작동하는 답변에 감사드립니다! 그렇다면 attr.disabled작동 disabled하지 않는 이유는 무엇입니까?
Dylanthepiguy

5
이것이 작동하는 동안 템플릿 기반 양식과 반응 양식을 혼합하는 실제 문제를 해결하지 못하는 해킹입니다. OP는 둘 다가 아닌 둘 중 하나를 사용해야합니다.
adam0101

2
<입력이 [attr.disabled] = "장애인 || 널 (null)"/> 나는 작업도 생각
프란체스코

41

나는 문제를 알아 냈다고 생각합니다.이 입력 필드는을 포함했기 때문에 반응 양식 (?)의 일부입니다 formControlName. 이것은 입력 필드를 비활성화하여 수행하려는 작업이 작동하지 않음을 의미합니다 ( is_edit예 : [disabled]="is_edit"다른 경우에는 작동하는 시도 ). 양식으로 다음과 같은 작업을 수행해야합니다.

toggle() {
  let control = this.myForm.get('name')
  control.disabled ? control.enable() : control.disable();
}

그리고 is_edit모두 잃습니다 .

입력 필드를 기본값으로 비활성화하려면 양식 컨트롤을 다음과 같이 설정해야합니다.

name: [{value: '', disabled:true}]

여기 플런 커가 있습니다


30

간단히 할 수 있습니다.

<input [disabled]="true" id="name" type="text">

1
이것이 작동하는 동안 "false"는 컨트롤을 활성화 할 수 있음을 시사합니다. 비활성화 된 속성의 존재는 값이 아니라 컨트롤을 비활성화 한 것이기 때문입니다.
Mecaveli

@Mecaveli, [disabled]를 false로 설정하면 실제로 컨트롤이 활성화됩니다. <input [disabled] = "false"id = "name"type = "text">는 입력 필드를 활성화합니다. 각도 응용 프로그램을 확인할 수 있습니다.
Ifesinachi Bryan

1
여기서 나 자신을 바로 잡으려면 : 내가 배운 것처럼 [disabled]는 [attr.disabled]처럼 "disabled"html 속성 값을 실제로 제어하지 않습니다. 따라서 [disabled] = "false"는 html 속성 "disable"의 값으로 "false"는 작동하지 않지만 작동합니다.
Mecaveli

6
따라서 대체로 카운터 포인트를 제시하기 전에 실제로 편집기를 사용하고 사용해보아야합니다.
Ifesinachi Bryan 2018

실제로, 다운 투표를해서 죄송합니다. 지금은 취소 할 수 없습니다. 키우면는 [장애인] ... 같음 (별로 생각하지 않고 나) 생각 년 [attr.disabled] 오용되었습니다
Mecaveli

26

일부 명령문에서 입력을 비활성화하려는 경우. 사용 [readonly]=true또는 false대신 사용할 수의.

<input [readonly]="this.isEditable" 
    type="text" 
    formControlName="reporteeName" 
    class="form-control" 
    placeholder="Enter Name" required>

1
반응성 친화적 인 솔루션.
John Deer 19

1
맞습니다. 나를 위해 [attr.disabled] = "disabled"는 단방향으로 만 작동했습니다. 즉, 입력이 초기 비활성화 / 활성화 상태로 유지되었습니다
spiritworld

이것에 대해 정말 감사합니다!
Nazir

Nazir문제 없습니다
Usman Saleh

13
<input [disabled]="is_edit" id="name" type="text">
<button (click)="is_edit = !is_edit">Change input state</button>

export class AppComponent {
  is_edit : boolean = false;
}

1
isDisabled 메소드에 콘솔 로그를 넣으면 수백 개의 콘솔 로그가 실행됩니다. isDisabled 메서드에 복잡한 논리가있는 경우 문제 일 수 있습니다. 그래서 이것이 좋은 해결책인지 잘 모르겠습니다.
Téwa

1
Angular 변수에 동적 검사를 넣지 마십시오. 그렇지 않으면 무한 루프가 발생합니다. [disabled]="is_edit"직접 사용할 수 있습니다 . 왜 isDisabled()기능?
alex351

입력 상태를 직접 변경하려면 코드를 업데이트하십시오.
Yoav Schniederman

7

나는 당신이 false대신에 의미했다고 생각합니다'false'

또한, [disabled]을 기대하고있다 Boolean. 당신은 반환하지 않도록해야합니다 null.


4

의 fedtuck의 수락 된 답변 에 대한 Belter의 의견에 대한 답변 입니다.

이것은 Mozilla 문서 와 관련하여 내가 아는 어떤 것도 사실이 아닙니다.

disabled는 true 또는 false와 같습니다.

disabled 속성이 있으면 값에 관계없이 요소가 비활성화됩니다. 이 예 보기

<input placeholder="i can be changed"/>
<input disabled placeholder="i can NOT be changed"/>
<input disabled="true" placeholder="i can NOT be changed"/>
<input disabled="false" placeholder="i can NOT be changed"/>

3
순수 Html의 경우 참이고 전적으로 참이지만 각도의 경우 특히 양방향 바인딩을 수행 할 때 disabled에 대한 부울 값을 제공해야합니다.
Ifesinachi Bryan 2018 년

4

이 솔루션을 선호합니다

HTML 파일에서 :

<input [disabled]="dynamicVariable" id="name" type="text">

TS 파일에서 :

dynamicVariable = false; // true based on your condition 

3

찾고있는 것은 disabled = "true" 입니다. 예를 들면 다음과 같습니다.

<textarea class="customPayload" disabled="true" *ngIf="!showSpinner"></textarea>

6
이것은 올바르지 않습니다 HTML과 DOM의 disabled속성은 속성 이름의 요구가 지정하는 의미 "부울 속성"입니다 - 또는 그 값이 동일해야합니다 disabled예를 들어, disabled="disabled" - it does not recognize the values of TRUE '또는 false- 그래서 disabled="false"여전히 요소가 비활성화 될 것입니다 원인.
Dai

2

데모

is_edit부울 유형으로 만듭니다 .

<input [disabled]=is_edit id="name" type="text">

export class App {
  name:string;
  is_edit: boolean; 
  constructor() {
    this.name = 'Angular2'
    this.is_edit = true;
  }
}

2

Angular 7에서 TextBox 비활성화

<div class="center-content tp-spce-hdr">
  <div class="container">
    <div class="row mx-0 mt-4">
      <div class="col-12" style="padding-right: 700px;" >
          <div class="form-group">
              <label>Email</label>
                <input [disabled]="true" type="text" id="email" name="email" 
                [(ngModel)]="email" class="form-control">
          </div>
     </div>
   </div>
 </div>


0

또한 입력 상자 / 버튼이 비활성화 상태로 유지되어야하는 경우 간단히 <button disabled>또는 <input disabled>작동합니다.


0

Select각도 9에서 비활성화 되었습니다.

boolean이 예제에서 값으로 비활성화 된 작업을 기억 하십시오. 국가가 선택되지 않은 경우 지역이 비활성화 (change)되는 select옵션 과 함께 이벤트를 사용하고 있습니다.

find.component.ts 파일

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

@Component({
  selector: 'app-find',
  templateUrl: './find.component.html',
  styleUrls: ['./find.component.css']
})
export class FindComponent implements OnInit {
  isCountrySelected:boolean;

  constructor() { }
  //onchange event disabled false
 onChangeCountry(id:number){
   this.isCountrySelected = false;
 }
  ngOnInit(): void {
    //initially disabled true
    this.isCountrySelected = true;
  }

}

find.component.html

//Country select option
<select  class="form-control"  (change)="onChangeCountry()" value="Choose Country">
                    <option value="">Choose a Country</option>
                    <option value="US">United States</option>
                     
</select>
//region disabled till country is not selected 
<select class="form-control" [disabled]="isCountrySelected">
                    <option value="">Choose a Region</option>
                    <option value="">Any regions.</option>
                    
                </select>

-1

간단하게 사용할 수 있습니다

     <input [(ngModel)]="model.name" disabled="disabled"

나는 이렇게 얻었다. 그래서 선호합니다.


이것은 disabled 속성을 동적으로 설정하지 않습니다
Benjineer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.