typescript - Angular2 Http 双订阅

标签 typescript angular angular2-http

是否可以调用Subscribe方法两次?

我正在尝试构建 api 工厂,它在工厂中保存数据,但该数据可以在每次 ajax 调用时由不同的组件使用。

工厂

export class api {

    result = [];

    constructor (protected http: Http) { }

    getData ()
    {
        return this.http.get('./friends.json').map((res: Response) => res.json()).subscribe(res => this.result = res);
    }
}

测试组件,再次调用subscribe方法

export class TestPage {

    showListResult; 

    constructor (protected api: api) {

        this.api.getData().subscribe(res => this.showListResult = res)
    }

}

最佳答案

您可以返回新的 Observable 包装器。这样的事情应该有效:

import {Observable} from 'rxjs/Observable'

export class api {

    result = [];

    constructor (protected http: Http) { }

    getData () {
        return new Observable(observer => {
            this.http.get('./friends.json')
                .map((res: Response) => res.json())
                .subscribe(res => {
                    this.result = res;
                    observer.next(res);
                    observer.complete();
                });
        });
    }
}

关于typescript - Angular2 Http 双订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35397710/

相关文章:

angular - 为什么使用 golang 从 csv 文件读取 "O' max"string 时存在差异?

reactjs - 如何在本地插件中将 Gatsbys wrapPageElement 与 Typescript 一起使用?

javascript - Reactjs typescript : Property 'toLowerCase' does not exist on type 'never'

angular - 通过按 Ctrl 键并选择每一行来选择表中的多行。我如何将其应用到 Angular 2 上

Angular - POST上传的文件

javascript - Angular2 Http请求返回Observable而不带map方法

angular - 如何以类似于 Angular 中的 HttpHeaders 的紧凑方式设置 HttpParams

javascript - 找不到 bundle.js

css - Angular 7 - Material 组件 CSS 未加载

javascript - ngIf 无法在 Angular 组件内的 JavaScript 方法中工作