Cómo deshabilitar una entrada en angular2


En ts is_edit = true para desactivar...

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

Simplemente quiero deshabilitar una entrada basada en true o false.

Intenté lo siguiente:

[disabled]="is_edit=='false' ? true : null"
[disabled]="is_edit=='true'"
[disabled]="is_edit"
Author: c69, 2017-02-11

8 answers

Intenta usar attr.disabled, en lugar de disabled

<input [attr.disabled]="disabled ? '' : null"/>
 128
Author: fedtuck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-23 15:26:27

Creo que me di cuenta del problema, este campo de entrada es parte de una forma reactiva (?), ya que has incluido formControlName. Esto significa que lo que intenta hacer deshabilitando el campo de entrada con is_edit no está funcionando, por ejemplo, su intento [disabled]="is_edit", que en otros casos funcionaría. Con tu formulario necesitas hacer algo como esto:

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

Y perder el is_edit por completo.

Si desea que el campo de entrada se deshabilite como predeterminado, debe establecer el control de formulario como:

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

Aquí hay un émbolo

 21
Author: AJT_82,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-12 12:17:41

Simplemente podrías hacer esto

<input [disabled]="true" id="name" type="text">
 9
Author: Ifesinachi Bryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-08 09:08:03
<input [disabled]="isDisabled()" id="name" type="text">

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


 isDisabled() : boolean{
   return this.is_edit;
 }
}
 8
Author: Yoav Schniederman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-11 18:22:10

Supongo que quiso decir false en lugar de 'false'

También, [disabled] está esperando un Boolean. Debe evitar devolver un null.

 4
Author: zurfyx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-11 17:51:02

Lo que está buscando es disabled="true". He aquí un ejemplo:

<textarea class="customPayload" disabled="true" *ngIf="!showSpinner"></textarea>
 4
Author: Sumeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-22 21:24:38

Una nota en respuesta al comentario de Belter sobre la respuesta aceptada de fedtuck anterior, ya que no tengo la reputación de agregar comentarios.

Esto no es cierto para ninguno de los cuales soy consciente, en línea con el Mozilla docs

Deshabilitado es igual a verdadero o falso

Cuando el atributo disabled está presente, el elemento se deshabilita independientemente del valor. Ver este ejemplo

<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"/>
 2
Author: severin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-03 20:32:16

Demo

Hacer is_edit de tipo booleano.

<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
Author: Ajey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-11 17:55:12