¿Qué tiene de malo mi código angular? Estoy obteniendo:
Cannot read property 'remove' of undefined at BrowserDomAdapter.removeClass ...
HTML
<ol class="breadcrumb">
<li *ngClass="{active: step==='step1'}" (click)="step='step1; '">Step1</li>
<li *ngClass="{active: step==='step2'}" (click)="step='step2'">Step2</li>
<li *ngClass="{active: step==='step3'}" (click)="step='step3'">Step3</li>
</ol>
Respuestas:
La versión angular 2, ..., 9 proporciona varias formas de agregar clases condicionalmente:
tipo uno
tipo dos
y opción múltiple:
tipo tres
tipo cuatro
fuente
[ngClass]="js expression returning html class string"
lo que son lo mismo en este sentido[ngClass]=...
en lugar de*ngClass
.*
es solo para la sintaxis abreviada de directivas estructurales donde puede, por ejemplo, usaren lugar de la versión equivalente más larga
Ver también https://angular.io/docs/ts/latest/api/common/index/NgClass-directive.html
Ver también https://angular.io/docs/ts/latest/guide/template-syntax.html
fuente
*
solo permite una sinax simplificada en lugar de una forma canónica.Otra solución sería usar
[class.active]
.Ejemplo:
fuente
Esa es la estructura normal para
ngClass
es:Entonces, en su caso, simplemente utilícelo así ...
fuente
con los siguientes ejemplos puede usar 'IF ELSE'
fuente
Puede usar ngClass para aplicar el nombre de la clase condicionalmente y no en Angular
Por ejemplo
Condicional
Condición Múltiple
Expresión del método
Este método estará dentro de su componente
fuente
Deberías usar algo (en
[ngClass]
lugar de*ngClass
) así:fuente
En
Angular 7.X
Las clases CSS se actualizan de la siguiente manera, según el tipo de evaluación de expresión:
cadena: se añaden las clases CSS enumeradas en la cadena (espacio delimitado)
Matriz: se añaden las clases CSS declaradas como elementos de matriz
Las claves de objeto son clases CSS que se agregan cuando la expresión dada en el valor se evalúa como un valor verdadero, de lo contrario se eliminan.
fuente
para extender MostafaMashayekhi su respuesta para la opción dos> también puede encadenar múltiples opciones con un ','
También * ngIf se puede usar en algunas de estas situaciones, generalmente combinado con un * ngFor
fuente
Mientras creaba una forma reactiva, tuve que asignar 2 tipos de clase en el botón. Así es como lo hice:
Cuando el formulario es válido, el botón tiene btn y btn-class (de bootstrap), de lo contrario solo btn class.
fuente
Además, puede agregar con la función de método:
En HTML
En component.ts
fuente
Deje que YourCondition sea su condición o una propiedad booleana, luego haga esto
fuente
ngClass
sintaxis:Puedes usar así:
fuente
Esto es lo que funcionó para mí:
fuente
Puede usar [ngClass] o [class.classname], ambos funcionarán igual.
[class.my-class]="step==='step1'"
O
[ngClass]="{'my-class': step=='step1'}"
¡Ambos funcionarán igual!
fuente
No es relevante con la
[ngClass]
directiva, pero también recibí el mismo error quey pensé que era el error en mi
[ngClass]
condición, pero resultó que la propiedad a la que intentaba acceder[ngClass]
no estaba inicializada.Como si tuviera esto en mi archivo mecanografiado
y en mi
[ngClass]
estaba usandoy estaba recibiendo el error
y la solución fue arreglar mi propiedad a
Espero que ayude a alguien que está tratando de igualar una condición de una propiedad en
[ngClass]
fuente
El código es un buen ejemplo de ngClass si otra condición.
fuente
Intenta así ...
Define tu clase con ''
fuente