Причина, по которой это не работает, в том, что вы выдвигаете массив во временный массив, так что на самом деле это массив массивов ... вы можете исправить это так же просто, как
this.temp.push(...val)
хотя, возможно, я неправильно понимаю, что на самом деле излучает getTopNews
(массив или отдельный элемент новостей)
но я рекомендую попытаться использовать некоторые операторы, чтобы сделать это правильно, в частности, оператор сканирования, который накапливает данные, поскольку я предполагаю, что getTopNews
испускает несколько «кусков»
import {scan} from 'rxjs/operators';
getData(): Observable<News[]> {
return this.dataService.getTopNews().pipe(
scan((acc, curr) => acc.concat(curr), []) // or acc.concat([curr]) if curr is actually a single news item and not an array
// if you're not sure if its a single or array:
// acc.concat(Array.isArray(curr) ? curr : [curr])
);
}
}
это гораздо более простая структура, которая устраняет необходимость в переменной temp или внутреннем субъекте. Если вы хотите, чтобы он отображался только после того, как ВСЕ выполнено, просто замените сканирование на уменьшение.
Кажется также, что в вашем компоненте новостей есть ошибка, так как кажется, что он ожидает тему новости вместо реальной новости, то есть то, что он получает, основываясь на остальной части кода.