在我的角度的應用程序,我遇到了麻煩,使用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#安裝和使用率)? –