嗨,我正在使用Angular 2 final和router 3.0.我想过滤从this.router.events发出的事件

我想做的是:

import 'rxjs/operator/filter';

//...

this.router.events
  .filter((event:Event) => event instanceof NavigationEnd)
  .subscribe(x => console.log(x))

event可以是NavigationEndNavigationStartRoutesRecognized的实例,但我只想要NavigationEnd.但我犯了一个错误

Property 'filter' does not exist on type Observable<Event>

在编译时.

当我导入整个rxjs库时,错误消失了.在不加载完整的rxjs库的情况下,我应该导入什么使其工作?

推荐答案

UPDATE

对于RXJS 5.x版:

import 'rxjs/add/operator/filter';

对于RXJS 6.xversion:

import { filter } from 'rxjs/operators';

RxJS团队设计了following rules个,以帮助

  1. rxjs/operators:包含所有可管道式运算符.

import { map, filter, scan } from 'rxjs/operators';

  1. rxjs:包含创建方法、类型、调度程序和实用程序.

import { Observable, Subject, asapScheduler, pipe, of, from, interval, merge, fromEvent } from 'rxjs';

Angular相关问答推荐

Angular 输入信号和净化值

浏览器中的控制台根据折叠度同时显示字段的两个不同值

to Signal on Observables inside Signal

PrimeNG侧栏清除primeNG消息.为什么?

[已解决]如何在模块ngDoBootstrap中测试Angular 自定义元素和做覆盖

Angular 16模块中未使用的组件是否从Bundle 包中删除(树摇动)?

合并Cypress和Karma的代码覆盖率报告JSON文件不会产生正确的结果

如何正确导出/导入枚举和接口文件以便 Jest 成功完成测试?

Angular 16:信号更新未能更新视图

Angular 升级后 RXJS SwitchMap 无法与解析器一起正常工作

Angular 在关闭另一个对话框后打开另一个对话框的最佳做法是什么?

模块内的命名路由出口 - 路径匹配但内容未加载

Angular JWT Token 被添加到lazyUpdate 而不是 HttpHeaders 中的标头

您如何链接需要多个先前可观察对象的依赖订阅

单选按钮的Angular2 Reactive Forms formControl

RxJS - .withLatestFrom 的多个来源

错误 TS1086:无法在 Angular 9 的环境上下文中声明访问器

Angular-CLI 代理到后端不起作用

Angular:找不到不同的支持对象[object Object]

Angular 2 中的动态模板 URL