Что ж, ваш showImage
является свойством вашего компонента, поэтому установка его на true
означает, что выражение e.active || showImage
равно всегда true для каждого повторяющегося элемента, независимо от того, что e.active
приравнивается к.showImage
не распространяется на каждую повторяющуюся сущность;это одно свойство, связанное со всеми ними.
Ваш геттер и сеттер здесь по сути ничего не делают;вы получите тот же результат, связав ngClass с "{'is-active': e.active || entityService.showImage }"
Кроме того, у вас есть параметр e
в вашей функции setActive
, затененный в вашем выражении forEach
.Это может все испортить.
В конце концов, вы не указали, чего пытаетесь достичь, поэтому у меня нет ответа, чтобы вас туда доставить, но вы упомянули как-то получить showImage
ограничено для каждой сущности.
Если я сделаю большое жирное предположение и предположу, что вы пытаетесь показать изображение, когда объект неактивен, и что-то еще, когда он активен, это можно сделать немного по-другому:
// template
<header class="tabs__header">
<div
class="tab"
*ngFor="let e of entities"
[class.is-active]="e.active"
(click)="setActive(e)">
<button>
<img src="someSrc" *ngIf="!e.active" />
<h3 *ngIf="e.active">{{e.name}}</h3>
</button>
</div>
</header>
// component
setActive(e) {
this.entities.forEach(s => s.active = false);
e.active = true
// this would essentially toggle showImage on each click.
// is this intended?
// this.entityService.showImage = !this.entityService.showImage;
}
Это будет в основном переключаться между изображением и элементом is-active / h3 при каждом нажатии.
Если вы хотите отслеживать свойство showImage
для каждого Entity
, вам нужно добавить этосвойство типа Entity
и управлять им таким образом.Если это так, то было бы неплохо обернуть эти повторяющиеся Entities
в их собственные компоненты с предполагаемым поведением, ограниченным им.
Если бы я был совершенно неправ здесь, предполагая, что вы пытаетесьделать, извини.Просто дай мне знать.