我试图使用Observers的共享运算符,但它不起作用:
我的代码:
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不是一个函数.
在其他情况下,我成功导入例如map运算符,并正常使用如下:
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运算符来证明导入,在第一个场景中也是如此.loading $= new Observable< string>(observer => this._observer = observer).map(n => n );我犯了同样的错误.