Versuchen, active-span
zu einem Element bei der Auswahl eines size
hinzuzufügen, ist es ziemlich einfach in jQuery tun, aber ich bin ein bisschen verwirrt, wenn es in Angular. Wenn Sie also eine Größe von S/M/L
auswählen, wird eine neue Klasse mit dem Namen active-span
sowie beim Aktualisieren der Seite hinzugefügt, da die sizeVal
in localStorage()
gespeichert wird.Wie man ngClass mit ngFor basierend auf localStorage Wert hinzufügen
Ich versuchte mit ngClass
, aber es ist nicht die Klasse div
Element hinzufügen.
size: any;
sizeOpt:any;
private sizeOptionStorage = localStorage.getItem('sizeOpt');
constructor() {
this.size = ['XS', 'S', 'M', 'L', 'XL'];
}
selectSize(event) {
this.sizeOpt = event.target.innerText;
localStorage.setItem('sizeOpt', this.sizeOpt);
console.log(this.sizeOpt);
// add class when size is selected
}
Vorlage html -
<div *ngFor="let s of size" class="size" [ngClass]="{'active-span': sizeOptionStorage}" (click)="selectSize($event)">
<span> {{ s }} </span>
</div>
Hier ist ein plnkr zu replizieren, was ich versuche zu tun.
In jQuery würde es so etwas wie dieses
$('.size').on('click', function() {
spanText = $(this).text();
localStorage.setItem('sizeOption', spanText);
spanText = $(this).text();
$('div.size').each(function() {
$(this).removeClass('active-span');
});
$(this).addClass('active-span');
})
$('div.size').each(function() {
if ($(this).html() == sizeOption) {
$(this).addClass('active-span');
}
});
Wenn Sie den Code in Ihrer Frage aktualisieren, um Tippfehler zu beheben, wäre es nett, wenn Sie das irgendwo erwähnen würden. – Pytth