Estoy intentando agregar valores a una directiva deshabilitada . Entonces, si mira el código a continuación, estoy deshabilitando un botón si un valor coincide con System Admin
. Ahora estoy tratando de agregar más valores a esto. Así que quiero agregar System Admin
y HR Manager
a esto.
[disabled]="userRole === 'System Admin'"
Intenté esto pero no parece funcionar
[disabled]="userRole === 'System Admin' || 'HR Manager'"
4 respuestas
Si tiene que verificar muchas condiciones, es mejor escribir una función que devolverá true
o false
:
HTML :
[disabled]="isDisabled(userRole)"
Mecanografiado :
isDisabled(userRole:string):boolean {
if(userRole == "System Admin" || userRole == "HR Manager") {
return true
}
return false
}
La razón es que:
userRole === 'System Admin' || 'HR Manager'
Medio
if (userRole === 'System Admin') return true;
else return 'HR Manager';
Entonces puedes usar esto:
['System Admin','HR Manager'].indexOf(userRole) !== -1
No puede comparar una cosa con varias si son cadenas (según mi conocimiento) , por lo que debe modificar la condición de esta manera:
[disabled]="userRole === 'System Admin' || userRole === 'HR Manager'"
El problema con la función personalizada para deshabilitar el control, llama varias veces (llamado incluso si hace clic en el control):
Entonces, si solo hay dos valores para comparar, usaría el enfoque de código HTML
Puedes intentarlo así.
[disabled]="(userRole === 'System Admin' || userRole === 'HR Manager') ? true : false"
Preguntas relacionadas
Nuevas preguntas
angular
Preguntas sobre Angular (que no debe confundirse con AngularJS), el marco web de Google. Use esta etiqueta para preguntas angulares que no son específicas de una versión individual. Para el marco web anterior de AngularJS (1.x), use la etiqueta angularjs.