Наблюдаемый Angular 2 RxJS не загружается

#angular #rxjs

#angular #rxjs

Вопрос:

мое веб-приложение прерывается (не загружается), когда я использую ‘new Observable()’ в любом месте метода или иным образом.

 Angular version 2.1.0
RxJs 5.0.0-beta.12
  

Это мой импорт в .ts-файле:

 import { Injectable } from '@angular/core';
import { DSUnit } from '../model/dsunit';
import { Headers, Http, Response } from '@angular/http';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/map';
import 'rxjs/add/observable/throw';
import 'rxjs/Rx';
import { DSCategory } from './../model/dscategory';
import { Observable } from 'rxjs';
  

Когда у меня есть этот фрагмент кода, он ломается:

 private handleError(error: any) : Observable<any> {
    let errMsg = "argh";
    return new Observable(); // <-- "offending" code
}
  

с этой ошибкой на консоли Chrome:

 (SystemJS) XHR error (404 Not Found) loading http://localhost:3000/node_modules/rxjs(…)
  

И когда я удаляю оскорбительную строку и вместо этого получаю это:

 private handleError(error: any) : Observable<any> {
    let errMsg = "argh";
    return null; // <-- "works" 
}
  

мое веб-приложение загружается без ошибок .. конечно, оно ломается, когда оператор ‘catch’ пытается обработать ошибку, но это сработает, как только я преодолею препятствие с

 "new Observable()"
  

Есть идеи, кто-нибудь?

Комментарии:

1. import { Observable } from 'rxjs/Rx'; Это тоже застало меня врасплох…

2. Иногда вы просто не можете доверять своей IDE, когда используете функцию автоматического импорта….

Ответ №1:

Вы могли бы попробовать это:

 Observable.of(errMsg);
  

или

 Observable.throw(errMsg);
  

в зависимости от вызывающего.

Комментарии:

1. Это не работает. Дело в том, что ЛЮБОЕ использование Observable, которое создаст Observable-object, сломается. Я изначально пробовал Observable. бросить, но это сломалось, поэтому я попытался вернуть просто обычный наблюдаемый объект, который также ломается. То же самое происходит, когда я пытаюсь использовать Observable.of()….

Ответ №2:

Черт возьми … «автоматический импорт» в Visual Studio Code испортил мой импорт.

Когда я импортирую ‘{Observable}’, это не должно быть

 import {Observable} from 'rxjs'
  

это должно быть

 import {Observable} from 'rxjs/Rx'