Angular 2 - Shared Observable - 第二个订阅错误回调失败

时间:2017-11-29 18:44:06

标签: angular rxjs angular-httpclient

我们有一个处理视图管理的组件和一个管理服务器交互和数据解析的服务。

service postForm方法返回组件的共享observable。 该服务订阅它,组件也订阅。

成功时,服务回调方法会执行一些数据操作 此外,在成功或错误时,组件回调会更新视图中的反馈。

问题:只有在服务订阅功能包含错误回调时才会触发组件错误回调。

我使用的是坏模式吗? 如果不是,为什么我在两个订阅函数中都需要错误回调以使组件1工作?

由于

组件:

awk -F'"*;"*' -v year=$1 '$4<year{count++} END{print count}' file

服务:

    onSubmit(): void {
    this.service.postForm().subscribe(
        () => this.onSuccessfulPost(),
        ()=>this.onErrorPost()
    );
}

1 个答案:

答案 0 :(得分:0)

我不确定为什么没有错误回调它不起作用,两个观察者应该相互独立。但是在模式方面,我会避免订阅服务并将订阅留给组件。如果您需要在服务中执行一些独立于响应的逻辑,那么您可以使用do运算符。

postForm() {
    //Code here assembles url and body variables

    this.currentObservable = this.http.post(url, body)
        .map((response: Response) => this.parseResponse(response))
        .catch((err: Response) => this.onHttpError(err))
        .do(response => this.onSuccessfulPost(response));
    return this.currentObservable;
}

由于您只有1个观察者(订阅者),因此您不再需要该共享