加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angular 2导入Observable的共享运算符

发布时间:2020-12-17 17:01:38 所属栏目:安全 来源:网络整理
导读:我试图使用Observers的共享运算符,但它不起作用: 我的代码: import { Injectable } from '@angular/core';import { Observer } from 'rxjs/observer';import { Observable } from 'rxjs/observable';import 'rxjs/add/operator/share';@Injectable()export
我试图使用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 );我犯了同样的错误.

解决方法

iuristona的答案有效,但仅仅因为你导入了整个图书馆:

import { Observable } from 'rxjs/Rx';

通过仅从’rxjs / Observable’模块导入,您只导入了一些方法.移动用户将欣赏只导入您需要的方法而不是整个库.你可以这样做:

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/debounceTime';  // added method
import 'rxjs/add/operator/map';           // added method

希望有所帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读