无法在 RxJs 6 和 Angular 6 中使用 Observable.of
Posted
技术标签:
【中文标题】无法在 RxJs 6 和 Angular 6 中使用 Observable.of【英文标题】:Could not use Observable.of in RxJs 6 and Angular 6 【发布时间】:2018-10-17 15:39:23 【问题描述】: import Observable, of from "rxjs";
// And if I try to return like this
return Observable.of(this.purposes);
我收到一条错误消息,指出“typeof Observable”类型上不存在属性“of”
【问题讨论】:
在 v6 中它只是return of(this.purposes)
。
这是在哪里记录的?典型的行是“你从一个地方拉入你需要的任何运算符,在'rxjs/operators'下”这显然与创建不同,但不清楚静态方法是否已被替换。这些导入知识分散在整个银河系中,就像我正在寻找刚刚失去时间的 Tox U。
【参考方案1】:
看起来卡坦特的评论是正确的,RxJS upgrade guide 没有具体涵盖该方法,但确实说 “对可观察对象进行操作的类已被函数替换”
这似乎意味着所有或大部分类方法(如 .of、.throw 等)已被函数替换
所以不是
import Observable, of from "rxjs";
Observable.of(this.purposes);
做
import of from "rxjs";
of(this.purposes);
【讨论】:
从 'rxjs/observable/of' 导入 of ;reduce()
呢?
reduce() 已移至运算符,因此您可以使用 import reduce from 'rxjs/operators';
导入它
这是一个可怕的变化。这些方法应该像以前一样是类上的静态方法。现在更容易发生名称冲突。
您可以对更改有一个概览academind.com/learn/javascript/rxjs-6-what-changed【参考方案2】:
rxjs 6
import PreloadingStrategy, Route from '@angular/router';
import Observable, of from 'rxjs';
export class SelectivePreloadingStrategy implements PreloadingStrategy
preload(route: Route, load: Function): Observable<any>
return route.data && route.data.preload === false ? of(null) : load();
【讨论】:
【参考方案3】:要避免black-list linting of the rxjs,请像这样导入它们:
import Observable from 'rxjs/Observable';
import of from 'rxjs/observable/of';
【讨论】:
以上是关于无法在 RxJs 6 和 Angular 6 中使用 Observable.of的主要内容,如果未能解决你的问题,请参考以下文章
更新到 Angular 6 和 rxjs 6 后 Plunker 坏了
Angular 7、Ngrx、Rxjs 6 - 访问延迟加载模块之间的状态