iur*_*ona 3 import observable rxjs angular
我试图使用shared观察者的运算符,但它不起作用:
我的代码:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我调用时,.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;
});
Run Code Online (Sandbox Code Playgroud)
因此,即使我尝试使用map运算符来证明导入,在第一种情况下this.loading$ = new Observable<string>(observer => this._observer = observer).map(n => n);我也会得到相同的错误.
iuristona的答案有效,但仅仅因为你导入了整个图书馆:
import { Observable } from 'rxjs/Rx';
Run Code Online (Sandbox Code Playgroud)
通过仅从'rxjs/Observable'模块导入,您只导入了一些方法.移动用户将欣赏只导入您需要的方法而不是整个库.你可以这样做:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/debounceTime'; // added method
import 'rxjs/add/operator/map'; // added method
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
3847 次 |
| 最近记录: |