API 응답을 반복하고 다음 코드를 사용하여 페이지에 일부 항목 (여성 및 남성 연령 그룹)을 표시하고 있습니다.
<ng-container *ngFor="let event of day.availableEvents">
{{ event.name }}
<br>
<ng-container *ngFor="let maleAgeGroup of event.maleAgeGroups">
<span [class.is-active]="status" (click)="updateStatus()" {{ maleAgeGroup }}</span>
</ng-container>
</ng-container>
그리고 이것은 내가 작업하고있는 JSON 데이터입니다.
"days": [
{
"date": "2021-04-14T00:00:00.000Z",
"availableEvents": [
{
"id": 1,
"name": "Event A",
"femaleAgeGroups": ["U13", "U15", "U17"],
"maleAgeGroups": ["U13", "U15", "U17"]
},
{
"id": 2,
"name": "Event B",
"femaleAgeGroups": ["U13", "U15", "U17"],
"maleAgeGroups": ["U13", "U15", "U17"]
},
]
}
]
연령 그룹을 클릭하면 is-active
CSS 클래스가 추가 / 제거 되도록 해당 상태를 true 또는 false로 전환하고 싶습니다 .
내가 시도하는 대답에 상관없이 작동하도록 할 수 없으며 대부분의 경우 '문자열에 상태를 할당 할 수 없음'과 같은 오류가 발생합니다. 이것이 바로 위의 코드를 기본으로 제거한 이유입니다. 데이터가 구조화 된 방식 때문일까요?
아래의 예는 강조 표시된 텍스트를 클릭하고 is-active
클래스가 적용된 최종 결과입니다 .
[class.is-active]
값에 '결합'해야합니다. 전체적으로하려는 작업의 의도가 명확하지 않지만 각 연령 그룹에는 상태가 필요합니다. 따라서 서버에서 데이터를 업데이트 / 수정하거나 각 연령 그룹의 상태로 구성 요소를 보강해야합니다.
"femaleAgeGroups": [{name:"U13", active:true}, {name:"U15", active:false}, {name:"U17", active:false}], etc..
그런 다음 템플릿에서 css 클래스를 부울 값에 바인딩 할 수 있습니다.
<ng-container *ngFor="let maleAgeGroup of event.maleAgeGroups">
<span [class.is-active]="maleAgeGroup.active" (click)="updateStatus(maleAgeGroup)" {{ maleAgeGroup.name }}</span>
</ng-container>
.. 업데이트하려면 항목을 전달하여 기능을 업데이트하고 활성 상태를 업데이트합니다.
updateStatus(item:any): void {
item.active = !item.active;
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다