Observable.of不是一个函数

uks*_*ksz 168 rxjs angular

Observable.of在项目中导入函数时遇到问题.我的Intellij看到了一切.在我的代码中,我有:

import {Observable} from 'rxjs/Observable';
Run Code Online (Sandbox Code Playgroud)

在我的代码中我使用它:

return Observable.of(res);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

uks*_*ksz 224

其实我的进口搞砸了.在最新版本的RxJS中,我们可以像这样导入它:

import 'rxjs/add/observable/of';
Run Code Online (Sandbox Code Playgroud)

  • 在我的第192次重复之后,我注意到在我的代码中我从**`operator /`** - `rxjs/add/operator/of`导入 - 而不是`observable /`.D'哦. (20认同)
  • 如果得到无法找到模块“ rxjs / add / observable / of”怎么办? (2认同)

小智 141

如果在使用Angular 6/rxjs 6时有任何人遇到此问题,请参阅此处的答案: 无法在RxJs 6和Angular 6中使用Observable.of

简而言之,您需要像这样导入它:

import { of } from 'rxjs';
Run Code Online (Sandbox Code Playgroud)

而不是打电话

Observable.of(res);
Run Code Online (Sandbox Code Playgroud)

只是用

of(res);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!由于api的波动性,弄清楚Rx中的进口总是令我感到非常沮丧. (2认同)

Mar*_*ger 42

虽然这听起来很奇怪,但对我来说,重要的是在导入路径中大写'O' import {Observable} from 'rxjs/Observable.observable_1.Observable.of is not a function如果我从中导入Observable,则保持存在的错误消息rxjs/observable.奇怪,但我希望它能帮助别人.


Eye*_*Eye 29

我的愚蠢错误是当我/add要求观察时我忘了添加.

是:

import { Observable } from 'rxjs/Observable';
import 'rxjs/observable/of';
Run Code Online (Sandbox Code Playgroud)

rxjs/observable/of事实上,在视觉上看起来很好,因为存在.

应该:

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
Run Code Online (Sandbox Code Playgroud)


Aki*_*_MJ 24

如果您使用的是Angular 6/7

import { of } from 'rxjs';
Run Code Online (Sandbox Code Playgroud)

而不是打电话

Observable.of(res);
Run Code Online (Sandbox Code Playgroud)

只是用

of(res);
Run Code Online (Sandbox Code Playgroud)


小智 19

无论出于何种原因,补丁对我不起作用,所以我不得不求助于这种方法:

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

// ...

return of(res)
Run Code Online (Sandbox Code Playgroud)


dha*_*tar 18

只是添加,

如果您使用其中许多,那么您可以导入所有使用

import 'rxjs/Rx'; 
Run Code Online (Sandbox Code Playgroud)

正如@Thierry Templier所说.但我认为如果您使用的是有限运营商,那么您应该导入个别运营商

import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/mergeMap';
import 'rxjs/add/observable/of';
Run Code Online (Sandbox Code Playgroud)

如@uksz所述.

因为'rxjs/Rx'将导入绝对性价比的所有Rx组件.

对照


Thi*_*ier 16

您也可以通过这种方式导入所有运算符:

import {Observable} from 'rxjs/Rx';
Run Code Online (Sandbox Code Playgroud)

  • 我不建议以这种方式导入,因为这是一个非常大的库,而"of"只是它的一小部分. (7认同)
  • @methgaard`import {Observable}来自'rxjs/Observable'import'rxjs/add/observable/of';`不起作用.只有'import {Observable}来自'rxjs/Rx';`有效.版本是5.4.2 (2认同)

kar*_*ari 5

我正在使用 Angular 5.2 和 RxJS 5.5.6

此代码并没有工作:

     import { Observable,of } from 'rxjs/Observable';

     getHeroes(): Observable<Hero[]> {
        return of(Hero[]) HEROES;

      }
Run Code Online (Sandbox Code Playgroud)

下面的代码有效:

    import { Observable } from 'rxjs/Observable';
    import { Subscriber } from 'rxjs/Subscriber';

     getHeroes(): Observable<Hero[]> 
     {
          return Observable.create((observer: Subscriber<any>) => {
              observer.next(HEROES);
              observer.complete();
          });

      }
Run Code Online (Sandbox Code Playgroud)

调用方式:

this.heroService.getHeroes()
      .subscribe(heroes => this.heroes = heroes);
Run Code Online (Sandbox Code Playgroud)

我认为他们可能会在 RxJS 5.5.2 中移动/更改 of() 功能