线上demo:https://stackblitz.com/edit/a...当点击iPhone时,颜色会变蓝色再点一次会变回黑色,这里使用this.betState[selectId]=!this.betState[selectId];然后按删除也可以把iPhone变成蓝色现在问题就是删除没有用我想是因为del()没有抓到正确的变量(this.betState)但是betThis()却抓的到很奇怪困扰很久了有人可以帮忙一下吗为什么del()抓不到正确的变量?bet.tsbetState={};betThis(selectId){this.betState[selectId]=!this.betState[selectId];console.log(this.betState)}del(id){this.betState[id]=falseconsole.log(this.betState)}bet.htmldeletecs.html{{list.test1.qq2[1]}}app.compontent.htmldatatest=[{"test1":{"qq2":["o123","iPhone"],},}]
2 回答
烙印99
TA贡献1829条经验 获得超13个赞
不得不说,你的代码很难理解。直接给你答案:cs.component.html-+bet.component.ts@Input()bet;del(id){this.bet.betState[id]=falseconsole.log(this.betState)}不理解再追问吧
叮当猫咪
TA贡献1776条经验 获得超12个赞
感谢千年虫愿意看我的代码,原本的代码太复杂,这demo是极简化后的所以很怪哈哈试了你的方法真的管用,厉害了,我的理解是这样你利用父组件去传变量,因为资料是由上传到下,子组件的变更,父组件不会知道,所以利用父组件加个[bet]="betComponent",用父组件传子组件的变量给子组件就正确了这理解正确吗?另外我昨天研读文件后好像想通了有试出另一个解答就是把betState变量改写在最上层的父组件,用父组件去向下传给所有需要的组件然后子组件用@output通知父祖件变更触发变更检测机制再向下通知所有组件变更不过你的方法还是高明许多只能说文件真的要好好读我这里会卡住,看来是因为对angular父子组件传递参数原理的不熟悉
添加回答
举报
0/150
提交
取消