Это происходит потому, что вы используете одно логическое значение для каждого элемента цикла ngFor. Вы должны попытаться добавить логическое поле к элементам массива:
abc = [
{
text: 'el1',
show: false
},
{
text: 'el2',
show: false
},
{
text: 'el3',
show: false
},
]
В вашем шаблоне:
<div *ngFor="let xyz of abc">
<span (click)="xyz.show = !xyz.show"></span>
<ul [ngClass]="{show:xyz.show}">
<li>{{xyz.text}}</li>
</ul>
</div>
Примечание
Вы также можете использовать ngIf
для отображения / скрытия списка опций:
<ul *ngIf="xyz.show">