Обновив переменную scope, обнови другую с той же стоимостью Angular2

Хорошие во все.

У меня есть метод, который мы говорили бы, что он делает нечто похожее:

getAll(){
         this.commonServices.getAllList()
                           .subscribe(
                               res => {
                                    this.resultList= res;
                                    this.copieResultList= res;                               
                               },
                                err => {
                                    console.log("Error: " + err);
                                });

    }

До сих пор все добро. Я звоню в услугу, которую мне вернет array объектов, и я храню Ваш ответ в двух переменных scope. resultListи copieResultList. Проблема состоит в том, что у меня ниже есть метод, который он делает:

getOne(id: string){
        this.commonService.getOne(id)
                            .subscribe(
                                res => {
                                 console.log(this.resultList);
                                    this.resultList.length = 0;
                                    this.resultList= res;
                                 console.log(this.resultList);
                                },
                                err => {
                                    console.log("Prueba error: " + err);
                                });
    }

Здесь начни проблему. И дело в том, что первый console.log печатает мне список, как он логичен. Но второй не, второй я показывает пустоту. А именно изменив resultList он изменил меня также copieResultList

scope не изменен ошибкой ни в какой другой стороне кода.

Какая-то идея?

1
задан 12.04.2017, 10:25
1 ответ

Больше, чем ошибка Scopes, это ошибка концепции программирования. Когда ты переворачиваешь стоимость объекта, не направляй объект в переменной, если не, что ты создаешь ссылку в, что объясняет то, что он перемещает тебя.

Как только ты перемещаешь первое задержание, оба указывают на то же место памяти, где находится вышеупомянутый объект.

, Когда ты прибываешь во второе изображение, ты изменяешь resultList, но также преданная copieResultList, потому что ты действительно изменяешь объект, на который оба указывают.

4
ответ дан 24.11.2019, 10:42
  • 1
    Тогда, ¿ qué форма я могу решать это?. Я понял верно то, что ты объясняешь jeje, но не вижу способ это решать. – Findelias 13.03.2017, 12:05
  • 2
    Не ló gica делания этого формой, что estas делая, мне кажется редким, но если ты нуждаешься в этом, ты можешь использовать это let nuevoObjeto = Object.assign ({ }, miObjeto) и ты получишь копию с различными ссылками – Alejandro Lora 13.03.2017, 16:01
  • 3
    Если я решил тебе начальный вопрос, ты мог бы помечать ее как правильная? Спасибо;) @Findelias – Alejandro Lora 13.03.2017, 16:02
  • 4
    Я не вижу способ использовать let aquí. Так как, если я это объявляю внутри первой funció n не podrí чтобы видеть потом Вашу стоимость в другой. И если я это объявляю вне их má s того же самого. – Findelias 13.03.2017, 16:29
  • 5
    Я верю в то, что ответ está отвеченная, это, что ты выдвигаешь, - это как решение этого в твоем особенном случае с примерами có я говорю, для чего harí в отсутствие пример в plunkr где enseñ такое искусство как harí в обычно. – Alejandro Lora 14.03.2017, 11:21