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"
8 answers
Intenta usar attr.disabled
, en lugar de disabled
<input [attr.disabled]="disabled ? '' : null"/>
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
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">
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;
}
}
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
.
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>
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"/>
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
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;
}
}
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