#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'