如何禁用angular2中的输入

Tam*_*mpa 94 disabled-input angular angular-reactive-forms

在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">
Run Code Online (Sandbox Code Playgroud)

我只是想根据true或禁用输入false.

我试过以下:

[disabled]="is_edit=='false' ? true : null"
[disabled]="is_edit=='true'"
[disabled]="is_edit"
Run Code Online (Sandbox Code Playgroud)

小智 257

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

<input [attr.disabled]="disabled ? '' : null"/>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的答案真的有效!那么为什么`attr.disabled`在'禁用'时不起作用? (13认同)
  • 虽然这有效,但它并没有解决将基于模板的表单与反应式表单混合的真正问题。OP 应该使用其中一个,而不是两者都使用。 (5认同)
  • 将attr值设置为null以便不将attr添加到元素 - 看起来像一个黑客 - 但它实际上是有效的,甚至可以在后见之明. (4认同)
  • “ disabled”等于“ true”或“ false” (2认同)
  • &lt;input [attr.disabled] =“ disabled || null” /&gt;我想也可以 (2认同)
  • 这在 Angular 的最新版本中不起作用。您可以使用`[disabled] =“disabled”`。 (2认同)

AJT*_*T82 38

我想我发现了问题,这个输入字段是反应形式(?)的一部分,因为你已经包含了formControlName.这意味着您通过禁用输入字段尝试执行的操作无效is_edit,例如您的尝试[disabled]="is_edit",在其他情况下可以使用.使用您的表单,您需要执行以下操作:

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

is_edit完全失去了.

如果要将输入字段默认禁用,则需要将表单控件设置为:

name: [{value: '', disabled:true}]
Run Code Online (Sandbox Code Playgroud)

这是一个吸烟者


Ife*_*yan 27

你可以这么做

<input [disabled]="true" id="name" type="text">
Run Code Online (Sandbox Code Playgroud)

  • 总而言之,你应该使用你的编辑器并在提出反击点之前尝试一下. (6认同)

Usm*_*leh 17

如果要在某些语句中禁用输入.使用[readonly]=truefalse代替禁用.

<input [readonly]="this.isEditable" 
    type="text" 
    formControlName="reporteeName" 
    class="form-control" 
    placeholder="Enter Name" required>
Run Code Online (Sandbox Code Playgroud)

  • 这适用于反应式输入形式 (2认同)
  • 反应友好的解决方案。 (2认同)
  • 这是对的。对我来说 [attr.disabled]="disabled" 仅单向工作,即输入保持初始禁用/启用状态 (2认同)

Yoa*_*man 13

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

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


 isDisabled() : boolean{
   return this.is_edit;
 }
}
Run Code Online (Sandbox Code Playgroud)


zur*_*fyx 6

我认为你的意思是false代替'false'

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