升级到后[电子邮件受保护]并将所有 RxJS 导入、方法和运算符转换为新的 >5.5 形式,我在运行时收到类型错误:Observable.of
不是一个函数。定义为扩展的成员的所有方法都会发生相同的错误Observable
, 例如,Observable.fromEvent
.
另一方面,被定义为独立函数的方法,例如Observable.combineLatest
尽管编译器警告它们在类型上不存在,但仍能正常运行Observable
.
只是为了澄清一下,我对任何运算符都没有任何问题(在将它们转换为管道形式之后)。只能用方法。
我找到的解决方案是替换:
import { of } from 'rxjs/observable/of';
import { fromEvent } from 'rxjs/observable/fromEvent';
...
const x = Observable.of(true, false);
const y = Observable.fromEvent(target, 'click');
with
import { ArrayObservable } from 'rxjs/observable/ArrayObservable';
import { FromEventObservable } from 'rxjs/observable/FromEventObservable';
...
const x = ArrayObservable.of(true, false);
const y = FromEventObservable.create(target, 'click');
但我认为这应该是更好的方法。我对吗?
Notes:
- 我被迫使用“提前编译”功能来构建和服务应用程序,因为否则角度注入器将会失败(但这是另一个问题)。
- 我知道存在这个其他类似的问题。但根据答案,该版本适用于小于
-
ng --version
gives:
角度 CLI:1.6.3,
节点:8.9.1,
操作系统:win32 x64,
角度:5.1.3,
@角度/cli:1.6.3,
@angular-devkit/构建优化器:0.0.36,
@Angular-devkit/核心:0.0.22,
@angular-devkit/schematics:0.0.42,
@ngtools/json-schema:1.1.0,
@ngtools/webpack:1.9.3,
@schematics/角度:0.1.11,
@schematics/schematics:0.0.11,
打字稿:2.5.3,
网络包:3.10.0,
当使用lettable(现在称为pipeable)运算符和工厂函数时,这些只是函数,而不是Observables的方法。所以应该只是
import { of } from 'rxjs/observable/of';
import { fromEvent } from 'rxjs/observable/fromEvent';
const x = of(true, false);
const y = fromEvent(target, 'click');
看看如何文档使用range
工厂功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)