Angular 5类属性自动更改

时间:2018-04-07 08:15:42

标签: angular

我有一个场景,我需要为此目的丢弃问题列表中的更改,我将初始值保存到名为“backupQuestions”的变量,并对名为“questions”的原始变量进行更改。问题是,当'questions'的值正在改变时,'backupQuestions'也会更新,即使我不是更新'backupQuestions'的值。

getQuestionsForSection() {
this.questionService.getQuestions(formId, sectionId, false).subscribe((res) => {
      if (res.code ===
        200 && res.isSuccess === true && res.data['questions']) {
        console.log("Questions: ", res.data['questions']);
        this.questions = res.data['questions']; //this is the original variable
        this.questionsBackup = res.data['questions']; //this is the duplicate variable
       } else { this.toastr.show(res.message, "
            error "); } }, (err) => { this.toastr.show(err.error.message, "
            error "); }); }

当我试图放弃更改时,我将'questionsBackup'重新分配给'问题',但两个变量中的值都相同。

我不知道为什么会发生这种情况,我遇到过类似情况。这是因为棱角分明的架构吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

似乎问题是数组。您应该创建一个数组副本,因为原始和备份在您的示例中具有相同的引用:

 this.questionsBackup = res.data['questions'].slice();

如果问题数组中的项目是对象,您也应该创建它们的副本:

 this.questionsBackup =res.data['questions'].map((item=>Object.assign({}, item))