Co jest nie tak z moim kodem Angular? Staje się:
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>
Odpowiedzi:
Wersja kątowa 2, ..., 9 zapewnia kilka sposobów warunkowego dodawania klas:
wpisz jeden
wpisz dwa
i wiele opcji:
wpisz trzy
wpisz cztery
źródło
[ngClass]="js expression returning html class string"
więc są takie same w tym sensie[ngClass]=...
zamiast*ngClass
.*
jest tylko dla skróconej składni dla dyrektyw strukturalnych, gdzie można na przykład użyćzamiast dłuższej równoważnej wersji
Zobacz także https://angular.io/docs/ts/latest/api/common/index/NgClass-directive.html
Zobacz także https://angular.io/docs/ts/latest/guide/template-syntax.html
źródło
*
pozwala jedynie na uproszczony synek zamiast formy kanonicznej.Innym rozwiązaniem byłoby użycie
[class.active]
.Przykład:
źródło
To jest normalna struktura dla
ngClass
:Więc w twoim przypadku po prostu użyj go w ten sposób ...
źródło
w poniższych przykładach możesz użyć „JEŚLI ELSE”
źródło
Możesz użyć ngClass, aby zastosować nazwę klasy zarówno warunkowo, jak i nie w Angular
Na przykład
Warunkowy
Wiele warunków
Wyrażenie metody
Ta metoda będzie dostępna w twoim komponencie
źródło
Powinieneś użyć czegoś (
[ngClass]
zamiast*ngClass
) takiego:źródło
W
Angular 7.X
Klasy CSS są aktualizowane w następujący sposób, w zależności od rodzaju oceny wyrażenia:
string - dodawane są klasy CSS wymienione w ciągu (rozdzielone spacją)
Array - dodaje się klasy CSS zadeklarowane jako elementy Array
Klucze obiektowe to klasy CSS, które są dodawane, gdy wyrażenie podane w wartości ma wartość zgodną z prawdą, w przeciwnym razie są usuwane.
źródło
aby rozszerzyć odpowiedź MostafaMashayekhi na opcję drugą>, możesz również połączyć wiele opcji za pomocą „,”
Również * ngIf może być użyty w niektórych z tych sytuacji, zwykle w połączeniu z * ngFor
źródło
Podczas tworzenia formularza reaktywnego musiałem przypisać 2 rodzaje klas do przycisku. Oto jak to zrobiłem:
Gdy formularz jest prawidłowy, przycisk ma klasę btn i btn (z bootstrap), w przeciwnym razie po prostu klasa btn.
źródło
Dodatkowo możesz dodać za pomocą funkcji metody:
W HTML
W component.ts
źródło
Niech YourCondition to twój warunek lub właściwość boolowska, a następnie zrób tak
źródło
ngClass
składnia:Możesz użyć w ten sposób:
źródło
Oto, co zadziałało dla mnie:
źródło
Możesz użyć [ngClass] lub [class.classname], oba będą działać tak samo.
[class.my-class]="step==='step1'"
LUB
[ngClass]="{'my-class': step=='step1'}"
Oba będą działać tak samo!
źródło
Nie dotyczy
[ngClass]
dyrektywy, ale dostałem również ten sam błąd coi pomyślałem, że to błąd w moim
[ngClass]
stanie, ale okazało się, że właściwość, do której próbowałem uzyskać dostęp w stanie[ngClass]
nie została zainicjowana.Jakbym miał to w swoim pliku maszynopisu
i w moim
[ngClass]
używałemi otrzymywałem błąd
i rozwiązaniem było naprawić moją własność
Mam nadzieję, że pomoże to komuś, kto próbuje dopasować stan nieruchomości w
[ngClass]
źródło
Kod jest dobrym przykładem ngClass, jeśli inaczej warunek.
źródło
Spróbuj w ten sposób ..
Zdefiniuj swoją klasę za pomocą „”
źródło