在我的角度的应用程序,我遇到了麻烦,使用rxjs创建一个可观察的数组。构造函数的可观察和静态方法(的,来自,...)不可用
来源:
import { Injectable } from "@angular/core";
import { Observable } from "rxjs/Rx";
import { User } from "../model/user";
@Injectable()
export class UserService {
public GetList(): Observable<User[]> {
return Observable.of(this.GetDummyData());
}
private GetDummyData(): Array<User> {
var users: Array<User> = new Array<User>();
users.push(new User(1, "user one", 1, 1000001, true));
users.push(new User(2, "user two", 2, 1000002, false));
users.push(new User(3, "user three", 3, 1000003, true));
return users;
}
}
这将产生以下错误:
ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'of' of undefined
所以,很显然,静态方法不可用。我试图从这里两件事情:
- 使用构造函数和创建的可观察到的(不工作,
error Uncaught (in promise): TypeError: Rx_1.Observable is not a constructor
) - 改变import语句以匹配以下实例(不工作,误差保持不变)
import { Observable } from "rxjs/Observable";
import "rxjs/Observable/of";
任何想法,我能做些什么来摆脱这种开溜吗?
二手LIB版本:
"@angular/common": "4.0.1",
"@angular/compiler": "4.0.1",
"@angular/core": "4.0.1",
"@angular/forms": "4.0.1",
"@angular/http": "4.0.1",
"@angular/platform-browser": "4.0.1",
"@angular/platform-browser-dynamic": "4.0.1",
"@angular/animations": "4.0.1",
"@angular/router": "4.0.1",
"core-js": "2.4.1",
"reflect-metadata": "0.1.10",
"rxjs": "5.4.1",
"systemjs": "0.20.11",
"zone.js": "0.8.5",
编辑 也许爱上了这里优越的一些问题。我查看了文档(Pankaj Pankar在这里的评论中慷慨提供的链接),并没有明确提到ES5,这是我的编译目标。因此,确保这是不是一个问题,这里有一些我的设置:
tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"lib": ["es5", "es2015", "dom" ]
}
}
无低于(或文档,这是)提到的版本的工作对我来说,所以我想在我的模块中必须存在不兼容性。
尽管如此,这里是我发现是工作的唯一途径 - 但未能如愿(大的负荷)
import { Observable } from "rxjs/Rx";
import Rx from 'rxjs/Rx';
import 'rxjs/add/observable/of';
public GetList(): Observable<User[]> {
return Rx.Observable.of(this.GetDummyData());
}
我的理解是,这意味着Rx.Observable定义,但可观察(如前使用)不是。
是不是应该是'进口“rxjs /添加/可观察/ of'' [文档链接](https://github.com/ReactiveX/ rxjs#安装和使用率)? –