类型错误:observable.of不是函数 - angular-cli@1.6.3 - rxjs@5.5.x - angular5

Rea*_*ren 1 typescript rxjs5 angular5

升级到angular-cli@1.6.3并将所有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');
Run Code Online (Sandbox Code Playgroud)

import { ArrayObservable } from 'rxjs/observable/ArrayObservable';
import { FromEventObservable } from 'rxjs/observable/FromEventObservable';
...
const x = ArrayObservable.of(true, false);
const y = FromEventObservable.create(target, 'click');
Run Code Online (Sandbox Code Playgroud)

但我认为这应该是一个更好的方法.我对吗?


笔记:

  1. 我被迫使用"Ahead Of Time compilation"功能来构建和提供应用程序,因为否则角度注入器会失败(但这是另一个问题).
  2. 我知道这个其他类似问题的存在.但根据答案,那个适用于小于<5.5的RxJS版本.
  3. ng --version 得到:

    Angular CLI:1.6.3,节点:8.9.1,操作系统:win32 x64,Angular:5.1.3,

    @ angular/cli:1.6.3,@ angular-devkit/build-optimizer:0.0.36,@ angular-devkit/core:0.0.22,@ angular-devkit/schematics:0.0.42,@ ngtools/json-schema :1.1.0,@ ngtools/webpack:1.9.3,@ schematics/angular:0.1.11,@ schematics/schematics:0.0.11,typescript:2.5.3,webpack:3.10.0,

JB *_*zet 5

当使用lettable(现在称为可管理的)运算符和工厂函数时,这些只是函数,而不是Observables的方法.所以它应该是

import { of } from 'rxjs/observable/of';
import { fromEvent } from 'rxjs/observable/fromEvent';

const x = of(true, false);
const y = fromEvent(target, 'click');
Run Code Online (Sandbox Code Playgroud)

了解文档如何使用range工厂功能.