如何禁用angular2中的输入

问题描述 投票:71回答:10

在ts is_edit = true禁用...

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

我只是想根据truefalse禁用输入。

我试过以下:

[disabled]="is_edit=='false' ? true : null"
[disabled]="is_edit=='true'"
[disabled]="is_edit"
angular angular-reactive-forms disabled-input
10个回答
237
投票

尝试使用attr.disabled,而不是disabled

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

1
投票

我更喜欢这个解决方案

在HTML文件中:

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

在TS文件中:

dynamicVariable = false; // true based on your condition 

0
投票

Demo

制作boolean类型的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;
  }
}

0
投票

而且如果输入框/按钮必须保持禁用,那么只需<button disabled><input disabled>工作。


0
投票

可以简单地使用

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

我是这样得到的。所以我更喜欢


37
投票

我想我发现了问题,这个输入字段是反应形式(?)的一部分,因为你已经包含了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}]

这是一个plunker


25
投票

你可以这么做

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

12
投票
<input [disabled]="isDisabled()" id="name" type="text">

export class AppComponent {
  name:string;
  is_edit : boolean = false;


 isDisabled() : boolean{
   return this.is_edit;
 }
}

12
投票

如果要在某些语句中禁用输入。使用[readonly]=truefalse而不是禁用。

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

5
投票

我认为你的意思是false而不是'false'

此外,[disabled]期待一个Boolean。你应该避免返回null


3
投票

您正在寻找的是禁用=“真实”。这是一个例子:

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

3
投票

回应Belter对上述fedtuck's accepted answer的评论的说明,因为我缺乏添加评论的声誉。

根据Mozilla docs,我所知道的任何一个都不是这样

disabled等于true或false

当disabled属性存在时,无论值如何,都禁用该元素。见this example

<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"/>

1
投票

在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>

© www.soinside.com 2019 - 2024. All rights reserved.