Угловые Поведенческие Предметы - PullRequest
0 голосов
/ 12 апреля 2019

Проблема в том, что Splice для массива, взятого из подписки поведенческого субъекта в виде массива типов, похоже, манипулирует непосредственно на значении субъекта

Я изолировал проблему до очень маленькой, но точной проблемы.

      this.aktiver.aktiver$.subscribe(res => {
      console.log(res);
      const x = res;

      x.forEach((ele , i) => {
        x.splice(i);
      })
    })
...

the output of the log gives me an array of 2 elements, but, when i open it, its empty, and says "value below was edited just now"
so the splice seems to have edited the original value of the behavioural subject that is aktiver$

i thought this couldnt happen, any ideas what is going wrong in my example?

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Здесь

      const x = res;

вы не копируете массив, вы создаете другую ссылку для того же объекта.На этом этапе x и res указывают на одно и то же, и любая мутация, сделанная на x , является мутацией, сделанной на res.

To (мелкая)скопируйте, вместо этого сделайте

      const x = [...res];

.

0 голосов
/ 12 апреля 2019

Обновление:

    this.aktiver.aktiver$.subscribe(res => {
      console.log(res);
      const x = new Array<KontoOpdeler>();
      res.forEach(ele => {
        x.push(ele);
      })


      x.forEach((ele , i) => {
        x.splice(i);
      });
    });

Работает, но это уродливое решение, и не идентифицирует мою проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...