我試圖使用shared
運營商觀察員,但它不工作:角2進口共享運營商可觀察
我的TS碼:
import { Injectable } from '@angular/core';
import { Observer } from 'rxjs/observer';
import { Observable } from 'rxjs/observable';
import 'rxjs/add/operator/share';
@Injectable()
export class LoadingService {
private _observer: Observer<string>;
loading$: Observable<string>;
constructor() {
this.loading$ = new Observable<string>(
observer => this._observer = observer).share();
}
toggleLoadingIndicator(name) {
if (this._observer) {
this._observer.next(name);
}
}
}
當我調用.share();
我得到的錯誤: TypeError:(中間值).share不是函數。
在其他情況下,我成功導入例如地圖運營商,並使用通常是這樣的:
import 'rxjs/add/operator/map';
this._http.get(this._url, {
headers: this._headers
}).map(r => r.json()).subscribe(json => {
console.log(json);
this.isValid = true;
});
所以,即使我嘗試使用map
運營商,以證明進口,在第一個場景this.loading$ = new Observable<string>(observer => this._observer = observer).map(n => n);
我得到相同的錯誤。
您是否從TSC或WebStorm等IDE收到此錯誤?如果來自TSC,也許嘗試更新到打字稿的最新版本。如果來自WS,那麼應該在下一個補丁中解決rxjs observables的運算符導入問題:https://youtrack.jetbrains.com/issue/WEB-20992#u=1458951972769 – awiseman
在瀏覽器中,當我運行應用程序 – iuristona
您使用的是哪種運行時轉換器和版本? – awiseman