Ich muss einen Wert innerhalb eines ngClass
Ausdrucks interpolieren, aber ich kann ihn nicht zum Laufen bringen.
Ich habe diese Lösung ausprobiert, die die einzigen sind, die für mich Sinn macht. Diese beiden scheitern bei der Interpolation:
<button [ngClass]="{'{{namespace}}-mybutton': type === 'mybutton'}"></button>
<button [ngClass]="{namespace + '-mybutton': type === 'mybutton'}"></button>
Dieser arbeitet mit der Interpolation, schlägt jedoch mit der dynamisch hinzugefügten Klasse fehl, da die gesamte Zeichenfolge als Klasse hinzugefügt wird:
<button ngClass="{'{{namespace}}-mybutton': type === 'mybutton'}"></button>
Meine Frage ist also, wie Sie dynamische Klassennamen in solchen verwenden ngClass
?
Dieser sollte funktionieren
aber Angular wirft auf diese Syntax. Ich würde das als Fehler betrachten. Siehe auch https://stackoverflow.com/a/36024066/217408
Die anderen sind ungültig. Sie können nicht
[]
zusammen mit verwenden{{}}
. Entweder der eine oder der andere.{{}}
bindet das Ergebnis stringifiziert, was in diesem Fall nicht zum gewünschten Ergebnis führt, da ein Objekt an übergeben werden mussngClass
.Plunker Beispiel
Um dieses Problem zu umgehen, wird die Syntax von @A_Sing oder angezeigt
kann verwendet werden.
quelle
Hier ist ein Beispiel für etwas, das ich für mehrere Klassen mit mehreren Bedingungen mache :
[ngClass]="[variableInComponent || !anotherVariableInComponent ? classes.icon.large : classes.icon.small, editing ? classes.icon.editing : '']"
wo:
classes
ein Objekt, das Zeichenfolgen verschiedener Klassennamen enthält. z.Bclass.icon.large = "app__icon--large"
Es ist dynamisch! Aktualisiert, wenn die Bedingungen aktualisiert werden.
quelle
Ich möchte einen wichtigen Punkt erwähnen, den Sie bei der Implementierung der Klassenbindung berücksichtigen sollten.
Die Klasse hier ist nicht korrekt verbindlich, da eine Bedingung erfüllt sein muss, wohingegen Sie zwei identische Klassen 'Badge-Warnung' haben, die zwei unterschiedliche Bedingungen haben können. Um dies zu korrigieren
quelle
quelle
Sie können verwenden
<i [className]="'fa fa-' + data?.icon"> </i>
quelle