从https://plnkr.co/edit/YyTPVQ?p=preview的示例中可以看出(一旦加载,应用程序点击左栏上的任何名称)
如果我修改任何用户的比例,它也会修改其他用户。
不要问我为什么但是,我通过删除所有.map和.js文件设法修复它,将修复程序提交给git,今天早上醒来,现在它不再工作(这听起来很奇妙!)https://github.com/thurft/appraisal
我的问题如下 employees.component.ts
处理employees.component.html
的逻辑
当我对某个问题进行评分时,它会修改所有 this.employee
的相同问题,而不是仅针对 this.selectedEmployee
进行修改。这将被触发updateQuestionRequest(question)
并且有一个console.log(this.employees)
来显示正在修改的对象。
我决不修改this.employees
数组,所以Angular以某种方式知道它需要修改数组中的对象。但它也修改了该数组中具有相同问题的所有对象。
问题/问题是:如何在selectedEmployee OBJ中保存selectedEmployee评级问题,而不是在所有员工OBJ中保存的值?
我无法判断Angular上是否存在错误,或者我的代码中存在问题,因为有时候它会起作用,有时候它没有并且没有一致性。
答案 0 :(得分:1)
您必须克隆TECHNICALQUESTIONS
否则所有员工将共享相同的参考:
employee[i].technicalQuestions = TECHNICALQUESTIONS.map(_=>{return Object.assign({}, _)};);
答案 1 :(得分:0)
由于Chrome尚未实现,Object.assign
解决方法是创建一个新的json文件以强制创建新对象employee[i].technicalQuestions = JSON.parse(JSON.stringify(TECHNICALQUESTIONS));