تایپاسکریپت - نیتیواسکریپت انگولار ۲ - اضافه کردن کلاس به برچسب هنگام کلیک


من میخواهم یک دکمه لایک (مثل اینستاگرام، توییتر و غیره) در اپلیکیشن nativescript angular 2 خودم پیادهسازی کنم. کلیک روی برچسب باید کلاس "active" را به برچسب اضافه کند. پس از کلیک دوباره، باید کلاس "active" را حذف کند.

home.component.html

<label text="{{ post.likes }}" class="" (tap)="like()">

home.component.html (بعد از کلیک روی برچسب)

<label text="{{ post.likes }}" class="active" (tap)="like()>

home.component.ts

like() {
    if (/* post contains "active" class */) {
        // remove "active" class to label
    } else {
        // add "active" class to label
    }
}

پاسخ شماره ۱

شما باید از ngClass در اینجا استفاده کنید.

<Label text="{{ post.likes }}" [ngClass]="liked ? 'active' : ''" (tap)="like()></Label>

و در فایل home.component.ts خود

like() {
//toggle this.liked here.
}

پاسخ شماره ۲

شما میتوانید از متغیری که ذخیره میکند آیا پسندیده شده است یا نه استفاده کنید. بر اساس آن، کلاس به عنصر اضافه یا از آن حذف میشود. مثال:

@Component({
    selector: 'app-element',
    template: '<div [class.liked]="post.liked">Hello Post <button (tap)="toggleLiked(post)"></button> </div>',
    styles: [`
       .liked {
           color: red
       }
    `]

})
export class AppComponent {
    liked = false;
    toggleLiked(post): void {
       post.liked = !post.liked;
    }
}

توجه: کار میکند زیرا مرجع شیء است. مثال: https://stackblitz.com/edit/angular-mkravu?file=src%2Fapp%2Fapp.component.html