当前位置:  开发笔记 > 编程语言 > 正文

缺少可观察的方法RxJS 5.0.0-beta.0

如何解决《缺少可观察的方法RxJS5.0.0-beta.0》经验,为你挑选了2个好方法。

我在使用带有Angular 2的RxJS时遇到了问题.从Typescript定义文件中建议的大多数方法都没有在我的Observable对象上定义,比如......

在此输入图像描述

在此输入图像描述

然后我想通了,Observable原型上不存在方法.

在此输入图像描述

我知道很多东西从版本4改为5,所以我想念一些东西吗?

Browserify为我添加了... 在此输入图像描述



1> Michael Oryl..:

如果没有看到您的实际代码,我无法确切地告诉您要添加什么来修复它.

但是一般的问题是:当Angular 2进入Beta阶段时,RxJS 5不再包含在Angular 2中.您需要导入所需的运算符,或者将它们全部导入.import语句如下所示:

import 'rxjs/add/operator/map'; // imports just map
import 'rxjs/add/operator/mergeMap'; // just mergeMap
import 'rxjs/add/operator/switchMap'; // just switchMap
import {delay} from 'rxjs/operator/delay'; // just delay

或者喜欢

import 'rxjs/Rx'; // import everything

要确定所需模块的路径,请查看源树.每次导入add都会向Observable或添加属性Observable.prototype.没有add,你需要做import {foo} from 'rxjs/path/to/foo'.

您还需要确保正确地将RxJS引入项目.这样的东西会进入你的index.html文件:

System.config({
    map: {
        'rxjs': 'node_modules/rxjs' // this tells the app where to find the above import statement code
    },
    packages: {
        'app': {defaultExtension: 'js'}, // if your app in the `app` folder
        'rxjs': {defaultExtension: 'js'}
    }
});
System.import('app/app'); // main file is `app/app.ts` 

如果你使用Webpack来构建像这个Github项目中的Angular 2应用程序(就像我一样),那么你不需要那些System东西,导入应该这样做.



2> TGH..:

是的,在Angular 2.0中,您必须包含所需的运算符/可观察量.

我是这样做的:

import 'rxjs/operator/map';
import 'rxjs/operator/delay';
import 'rxjs/operator/mergeMap';
import 'rxjs/operator/switchMap';
import 'rxjs/observable/interval';
import 'rxjs/observable/forkJoin';
import 'rxjs/observable/fromEvent';

但是,您还需要在System.js中进行配置

System.config({
            defaultJSExtensions: true,
            paths: {
                'rxjs/observable/*' : './node_modules/rxjs/add/observable/*.js',
                'rxjs/operator/*' : './node_modules/rxjs/add/operator/*.js',
                'rxjs/*' : './node_modules/rxjs/*.js'
            }
        });

这是工作代码:https://github.com/thelgevold/angular-2-samples

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有