嗨,我正在使用Angular 2 final和router 3.0。我想过滤从中发出的事件。路由器。事件
我想做的是:
import 'rxjs/operator/filter';
//...
this.router.events
.filter((event:Event) => event instanceof NavigationEnd)
.subscribe(x => console.log(x))
事件
可以是instanceOfNavigationend
,NavigationStart
或Routes认可
,但我只想要Navigationend
。但是我得到一个错误
类型Observable上不存在属性“filter”
在编译时。
当我导入整个
rxjs
库时,错误就消失了。我应该导入什么使它工作而不加载完整的rxjs库?
角度更新(5.x到6.x)也随rxjs从5.x更新而来。x到6。所以简单地加上
import { filter } from 'rxjs/operators';
然后
this.router.events.pipe(
filter((event:Event) => event instanceof NavigationEnd)
).subscribe(x => console.log(x))
希望这能帮助别人
匿名用户
对于这种情况,有几种可能的修复方法。
与rxjs/add/operator中的“补丁”操作符相比,Pipeable操作符是一种更好的方法,可以只引入所需的操作符/*
import { filter } from 'rxjs/operators';
// ..
this.router.events.pipe(
filter((event:Event) => event instanceof NavigationEnd)
).subscribe(x => console.log(x))
将导入语句更改为导入'rxjs/add/操作员/过滤器'。这将修改Observable.prototype
并将filter
方法添加到可观察类的每个实例中。
有两个后果:
- 每个应用程序执行一次导入语句就足够了
- 在共享库/npm包中,这可能会给库消费者带来一些混乱(使用库时,
filter()
方法会神奇地出现在可观察的
下)
语句import'rxjs/operator/filter'
完全有效。它将只导入操作员。这种方法不会干扰可观察的。原型
。不利的一面是,这将使连锁几家运营商更加困难。
import 'rxjs/operator/filter'; // This is valid import statement.
// It will import the operator without
// modifying Observable prototype
// ..
// Change how the operator is called
filter.call(
this.router.events,
(event:Event) => event instanceof NavigationEnd
).subscribe(x => console.log(x));
更多详情:管道操作员
更新
对于RXJS 5. x
版本:
导入'rxjs/add/operator/filter'
对于RXJS 6. x版本:
从“rxjs/operators”导入{filter}
RxJS团队设计了以下规则来帮助JavaScript开发人员重构导入路径:
rxjs/operators
:包含所有可管道化的运算符
从'rxjs/operators'导入{map,filter,scan}
import{Observable,Subject,asapScheduler,pipe,of,from,interval,merge,fromEvent}从'rxjs'导入
我使用“angular2网页包”和“angular2/表格,可见”,但遇到错误,需要帮助。。 有一个自定义表单验证程序-- 我可以找到文件"/projection_direction/node_modules/rxjs/操作员/DebounceTime.js" 为什么会有这样的错误- 类型“Observable”上不存在属性“debouceTime”。
升级到Angular 6.0和Rxjs到6.0后,我收到以下编译错误:
我得到这个错误: 属性'toPromise'不存在于类型'观察'. any中
在Angular 2使用Http服务的文档页面上,有一个示例。 我克隆了angular2 webpack初学者项目,并自己添加了上述代码。 我导入使用 我假设属性也被导入(起作用)。查看了rxjs.beta-6的更改日志,没有提到任何关于的内容。
我在尝试创建将keyup事件转换为可观察流时遇到问题。 我正在学习Ng书籍第6版。我被困在一个示例中,在您键入时搜索YouTube视频。当搜索返回时,我们将显示视频缩略图结果列表,以及每个视频的描述和链接。 因此,我们使用observable.from事件:https://github.com/NiLinli/ng-book2-angular-6-r68-code-samples/blob/mas
在使用rxjs的角度2中,我试图将promise转换为可观察的。正如许多在线指南所显示的,我在上使用了。其中抛出错误: Observable的导入方式如下: 尝试导入像其他运算符一样会导致错误: 即使我抑制了typescript错误,它仍然会导致错误: 错误: rxjs回购协议中也报告了类似的问题,但也没有解决方案。