【问题标题】:Could not use Observable.of in RxJs 6 and Angular 6无法在 RxJs 6 和 Angular 6 中使用 Observable.of
【发布时间】: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。

标签: angular rxjs6 angular-observable


【解决方案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';
    

    【讨论】:

      猜你喜欢
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      • 2018-09-23
      • 2018-10-15
      • 1970-01-01
      • 2019-02-28
      • 2018-12-19
      相关资源
      最近更新 更多