#javascript #angular
#javascript #angular
Вопрос:
если нажать на «iPhone», он станет синего цвета
и может быть переключена. используйте this.betState[selectId] = !this.betState[selectId];
и нажмите «Удалить», также можно отменить синий цвет «iPhone»
Теперь проблема в том, что «удалить» не работает.
Я думаю, это потому, что del () получает неправильную переменную (this.betState)
но betThis() может получить правильную переменную. так что toogle — это работа.
Как это исправить?
почему del() не может получить нужную переменную?
bet.ts
betState = {};
betThis(selectId){
this.betState[selectId] = !this.betState[selectId];
console.log(this.betState)
}
del(id){
this.betState[id] = false
console.log(this.betState)
}
bet.html
<div (click)="del('o123')">delete</div>
cs.html
<ng-container *ngFor="let list of test">
<div class="a" (click)="betComponent.betThis(list.test1.qq2[0])" [class.blue]="betComponent.betState[list.test1.qq2[0]]">
{{list.test1.qq2[1]}}
</div>
</ng-container>
<app-bet></app-bet>
app.compontent.html
<app-cs [test]="test" [betState]="betComponent.betState"></app-cs>
данные
test = [
{
"test1": {
"qq2": ["o123", "iPhone"],
},
}
]
демонстрация:https://stackblitz.com/edit/angular-zxlqqj?file=src/app/app.component.ts
Ответ №1:
Используйте дочерний компонент (bet.component) для связи с родительским компонентом (cs.component) с помощью декоратора @Output.
В cs.component.html используйте директиву *ngIf для удаления «iPhone». Это можно обработать, объявив переменную, которая скрывает ‘iPhone’, нажав на ‘delete’, которая далее обрабатывается с помощью @Output.
Комментарии:
1. Не очень понимаю, можете ли вы изменить мою демонстрацию?
2. То, что вы упомянули, является ключевым моментом. Я понял это после прочтения документа.