Angular, foreach в подписку - PullRequest
       0

Angular, foreach в подписку

0 голосов
/ 30 апреля 2020

Мне нужно построить массив из данных результата подписки.

На данный момент у меня есть это:

const dataFormat = new IData();
this.api.getData()
.pipe(
map(response => response),
tap(data => console.log('data array', data)))
.subscribe(dataResult => {
dataResult.forEach(function (item) {
     dataFormat.title = item['title'];
     dataFormat.author = item['author'];
     dataFormat.date = item['date'];
     this.listData.push(dataFormat);
});

});

В this.listData.push У меня есть эта ошибка: Potentially invalid reference access to a class field via 'this.' of a nested function

Если я использую let self = this с self.listData.push(dataFormat);, мой массив будет хранить только последний элемент из foreach.

1 Ответ

0 голосов
/ 30 апреля 2020

Я думаю, что есть ошибка области видимости , forEach также известен для таких ошибок .

Вы должны использовать нормальное значение для l oop вместо forEach l oop.

.subscribe(dataResult => {
   for(let item of dataResult) {
       dataFormat.title = item['title'];
       dataFormat.author = item['author'];
       dataFormat.date = item['date'];
       this.listData.push(dataFormat);
   }
});

или, если вы все еще хотите придерживаться forEach l oop, вместо этого передайте функцию стрелки:

.subscribe(dataResult => {
   dataResult.forEach(item => {
       dataFormat.title = item['title'];
       dataFormat.author = item['author'];
       dataFormat.date = item['date'];
       this.listData.push(dataFormat);
   });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...