<div class="item-row" *ngFor="let item of portfolio; let i = index">
<div class="row-box">
<div class="items-box" [ngClass]="{'description-close': hideDesc, 'description-open': showDesc}">
<h2 class="title-portfolio">{{item.title}}</h2>
<div class="desc-portfolio">{{item.description}}</div>
</div>
<span class="read-more" (click)="changeClass(i)">read more...</span>
</div>
</div>
public showDesc: boolean = false;
public hideDesc: boolean = true;
changeClass(i)
{
if(this.showDesc === false && this.hideDesc === true){
this.showDesc = true;
this.hideDesc = false }
else{
this.showDesc = false;
this.hideDesc = true }
}
Мне кажется вы все усложнили, было бы проще просто делать toggle
этого класса:
<div class="item-row" *ngFor="let item of portfolio">
<div class="row-box">
<div class="items-box" #box>
<h2 class="title-portfolio">{{ item.title }}</h2>
<div class="desc-portfolio">{{ item.description }}</div>
</div>
<span class="read-more" (click)="changeClass(box)">read more...</span>
</div>
</div>
Компонент:
private descriptionOpenedClass = 'description-open';
private descriptionClosedClass = 'description-close';
constructor(private renderer: Renderer2) {}
public changeClass(box: HTMLDivElement): void {
const descriptionOpened = box.classList.contains(this.descriptionOpenedClass);
if (descriptionOpened) {
this.renderer.removeClass(box, this.descriptionOpenedClass);
this.renderer.addClass(box, this.descriptionClosedClass);
} else {
this.renderer.removeClass(box, this.descriptionClosedClass);
this.renderer.addClass(box, this.descriptionOpenedClass);
}
}
UPD:
Либо же мутировать объект из массива portfolio
, добавляя ему новое свойство:
<div class="item-row" *ngFor="let item of portfolio">
<div class="row-box">
<div class="items-box" [ngClass]="{
'description-open': item.descriptionOpened,
'description-close': !item.descriptionOpened
}">
<h2 class="title-portfolio">{{ item.title }}</h2>
<div class="desc-portfolio">{{ item.description }}</div>
</div>
<span class="read-more" (click)="changeClass(item)">read more...</span>
</div>
</div>
Компонент:
public changeClass(item: any): void {
// изначально свойство `descriptionOpened` не существует
// поэтому `!undefined => true`
item.descriptionOpened = !item.descriptionOpened;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Делаю сборку gulp и застрял на валидации html Нашел плагин w3cjs и с помощью gulp-notify хотел бы выводить сообщение 'ошибка валидации смотри терминал',...