typescript – Angular2 beta.12和RxJs 5 beta.3的可观察错误

前端之家收集整理的这篇文章主要介绍了typescript – Angular2 beta.12和RxJs 5 beta.3的可观察错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
你好,

我正在使用VS2015中运行的Angular2 beta 12.当我将rxjs从5.0.0-beta.2更新到beta.3时,我会遇到一系列与我的承诺有关的例外情况.

例如.

> Observable< Response>类型上不存在属性映射
> Observable< Response>类型中不存在属性共享
> Ambient模块声明不能指定相对模块名称
> Ambient模块不能嵌套在其他模块或名称空间中.

的package.json

  1. {
  2. "name": "ASP.NET","version": "0.0.0","scripts": {
  3. "tsc": "tsc","tsc:w": "tsc -w","lite": "lite-server","start": "concurrent \"npm run tsc:w\" \"npm run lite\" "
  4. },"dependencies": {
  5. "angular2": "2.0.0-beta.12","systemjs": "0.19.24","es6-promise": "3.1.2","es6-shim": "0.35.0","reflect-Metadata": "0.1.3","rxjs": "5.0.0-beta.3",// beta.2 allowed project to build
  6. "zone.js":"0.6.6"
  7. },"devDependencies": {
  8. "gulp": "3.9.1","gulp-concat": "2.6.0","gulp-cssmin": "0.1.7","gulp-uglify": "1.5.3","rimraf": "2.2.8","concurrently": "2.0.0","lite-server": "2.1.0","typescript": "1.8.9"
  9. }
  10. }

问题与此代码中的地图功能有关:

  1. import {Injectable} from 'angular2/core';
  2. import {Http,Response} from 'angular2/http';
  3. import {Headers,RequestOptions} from 'angular2/http';
  4. import {Observable} from 'rxjs/Observable';
  5.  
  6. import {ApplicationVM} from '../../Applications/viewmodels/Application.viewmodel';
  7.  
  8. @Injectable()
  9. export class ApplicationService {
  10. constructor(private http: Http) { }
  11.  
  12. private _serviceUrl = './../api/';
  13.  
  14. getApplications() {
  15. return this.http.get(this._serviceUrl + "applications/active")
  16. .map(res => <ApplicationVM[]>res.json())
  17. // .map((res: Response) => res.json())
  18. .do(data => console.log(data)) // eyeball results in the console
  19. .catch(this.handleError);
  20. }
  21.  
  22. private handleError(error: Response) {
  23. console.log(error);
  24. return Observable.throw(error.json().error || 'Server error');
  25. }
  26.  
  27. }

在另一个,问题是与share()

  1. constructor(private _http: Http) {
  2. console.log("constructor");
  3. this.menulist$= new Observable(observer => this._menulistObserver = observer).share();
  4. this.menuState$= new Observable(observer => this._menuStateObserver = observer).share();
  5. this.menuWidth$= new Observable(observer => this._menuWidthObserver = observer).share();}

我觉得这可能很重要 – 一系列rxjs文件为相对引用加下划线红色../../Observable(以下示例在interval.d.ts中)

  1. import { IntervalObservable } from '../../observable/IntervalObservable';
  2. declare module '../../Observable' {
  3. namespace Observable {
  4. let interval: typeof IntervalObservable.create;
  5. }
  6. }

我的boot.ts

  1. ///<reference path="./../node_modules/angular2/typings/browser.d.ts"/>
  2. import {bootstrap} from 'angular2/platform/browser';
  3. import {ROUTER_PROVIDERS} from 'angular2/router';
  4. import {AppComponent} from './app.component';
  5. import {HTTP_PROVIDERS} from 'angular2/http';
  6. import 'rxjs/Rx'; // kitchen sink
  7.  
  8. // Bootstrap the application and reference the required directives
  9. bootstrap(AppComponent,[ROUTER_PROVIDERS,HTTP_PROVIDERS]);

我的html页面

  1. <!-- 1. Load libraries -->
  2. <script src="~/nodelibs/angular2/bundles/angular2-polyfills.js"></script>
  3. <script src="~/nodelibs/systemjs/system.src.js"></script>
  4. <script src="~/nodelibs/typescript/lib/typescript.js"></script>
  5. <script src="~/nodelibs/rxjs/bundles/Rx.js"></script>
  6. <script src="~/nodelibs/angular2/bundles/angular2.dev.js"></script>
  7.  
  8. <script src="~/nodelibs/angular2/bundles/router.dev.js"></script>
  9. <script src="~/nodelibs/angular2/bundles/http.dev.js"></script>
  10.  
  11.  
  12. <!-- 2. Configure SystemJS -->
  13. <script>
  14.  
  15. var rootPath = "@Url.Content("~/")";
  16.  
  17. System.config({
  18. //transpiler: 'typescript',//typescriptOptions: { emitDecoratorMetadata: true },baseURL: rootPath,defaultJSExtensions: true,packages: {
  19. app: {
  20. //format: 'register',defaultExtension: 'js'
  21. },map: {
  22.  
  23. 'rxjs/observable/*' : 'nodelibs/rxjs/observable/*.js','rxjs/operators/*' : 'nodelibs/rxjs/operators/*.js','rxjs/*' : 'nodelibs/rxjs/*.js'
  24. }
  25. }
  26. });
  27. System.import("/app/boot.js")
  28. .then(null,console.error.bind(console));
  29.  
  30. </script>

我很难过,并会感激一些帮助.

谢谢,丹.

根据Angular的package.json,你应该使用RxJS 5.0.0-beta.2 https://github.com/angular/angular/blob/master/package.json#L37

猜你在找的Angularjs相关文章