Попытка отфильтровать Observable, но свойство не существует для типа - PullRequest
0 голосов
/ 18 января 2019

У меня есть Observable getPages(), который возвращает массив, и я пытаюсь отфильтровать все страницы, где свойство parent равно ´id´. Но я не прогрессирую, потому что не могу получить доступ к этому parent.

Property 'parent' does not exist on type 'Page[]'

console.log (this.wordpressService.getPages ());

(6) [{…}, {…}, {…}, {…}, {…}, {…}]
  0: {id: 43, date: "2019-01-18T09:07:42", date_gmt: "2019-01-18T09:07:42", guid: {…}, modified: "2019-01-18T09:17:16", …}
  1: {id: 28, date: "2019-01-14T20:46:39", date_gmt: "2019-01-14T20:46:39", guid: {…}, modified: "2019-01-16T12:19:20", …}
  2: {id: 25, date: "2019-01-14T20:45:59", date_gmt: "2019-01-14T20:45:59", guid: {…}, modified: "2019-01-16T13:44:56", …}
  3: {id: 16, date: "2019-01-14T20:37:42", date_gmt: "2019-01-14T20:37:42", guid: {…}, modified: "2019-01-16T12:18:42", …}
  4: {id: 12, date: "2019-01-14T20:24:35", date_gmt: "2019-01-14T20:24:35", guid: {…}, modified: "2019-01-18T09:06:41", …}
  5: {id: 4, date: "2019-01-14T19:57:45", date_gmt: "2019-01-14T19:57:45", guid: {…}, modified: "2019-01-16T12:19:13", …}
  length: 6
  __proto__: Array(0)

page-detail.component.ts (отрывок)

export class PageDetailComponent implements OnInit {
  pageId: Number;
  filteredPage = [];

  constructor(private route: ActivatedRoute, private wordpressService: WordpressService) {}

 this.wordpressService.getPages()
  .pipe(filter(page => page.parent === this.pageId))
  .subscribe(page => this.filteredPage = page);
}

wordpress.service.ts (отрывок)

import {HttpClient} from '@angular/common/http';
import {Page} from './page';

constructor(private http: HttpClient) {}

getPages(): Observable<Page[]> {
  return this.http.get<Page[]>(`${this.API}/pages`);
}

интерфейс page.ts (отрывок)

export interface Page {
  id: number;
  date: string;
  date_gmt: string;
  guid: GUID;
  modified: string;
  modified_gmt: string;
  ...
  parent: number;
}

Я хотел бы получить новый массив с отфильтрованными результатами всех страниц. Но я просто получаю неопределенный или ничего, и я предполагаю, что это из-за этого page.parent. Пытаясь выучить rxjs, я не могу понять, как это сделать.

1 Ответ

0 голосов
/ 18 января 2019

Вам необходимо добавить оператор карты. У вас есть ошибка формы. Я могу заключить, что вы перебираете весь объект.

this.wordpressService.getPages()
  .pipe(map(pages => pages.filter((page) => page.parent === this.pageId)))
  .subscribe(page => this.filteredPage = page);

Надеюсь, это поможет

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