angular - 尝试过滤 Observable 但类型上不存在属性

标签 angular observable

我有一个 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 接口(interface)(节选)

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

我想以一个包含所有页面过滤结果的新数组结束。但我只是得到未定义或什么都没有,我假设这是因为这个 page.parent。尝试学习 rxjs 我似乎无法弄清楚如何做到这一点。

最佳答案

您需要添加 map 运算符。您遇到的表单错误我可以得出结论,您正在遍历整个对象。

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

希望对你有帮助

关于angular - 尝试过滤 Observable 但类型上不存在属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54254171/

相关文章:

javascript - 在 Angular2 TypeScript 中注释(出)代码

angular - 使用 NgRx 时如何避免不必要的 API 调用

angular - 迁移到 Angular 8 后,路由器没有给出导出的成员错误

javascript - RxJS Observable 轮询直到条件为 true

angular - 当一个对象依赖于另一个对象的数据时处理可观察对象

angular - 如何从 nrwl 工作区 libs 文件夹延迟加载模块?

Angular rxjs Observables 查找第一个事件服务器

Angular:每次需要更新时我都应该订阅()到http.get()吗?

javascript - RxJS - 为什么我要使用 throwError 而不是简单地抛出错误?

javascript - Angular 6 - 由于 NGRX,生产构建失败