当前位置: 首页 > 知识库问答 >
问题:

Angular2-可观测返回方法在另一个可观测中的使用价值

孙德本
2023-03-14

我不知道如何在我的http中使用当前返回的getUserHeaders()的可观察值。获取

类型“可观察”

能够将我的可观察返回方法getUserHeaders()的值用作http调用中的headers属性。而只返回http调用的可观察值。

(它使用由getUserHeaders()返回的harcoded头(因此不是可观察的promise的)。

getAllParticipants(): Observable<Array<Participant>> {
    return this.http.get('someUrl',
                {headers: this.getUserHeaders()})
           .map(response => {
               return response.json();
        });
    });
   }

通过用TypeScript的答案从Angular2中的超文本传输协议数据中链接RxJS可观测数据,我来到了平板地图方法。(请注意,这段代码当前抛出了“当前错误”)

getUserHeaders(): Observable<Headers> {
        let headers: Headers = new Headers();

        return NativeStorage.getItem("user").map(
            data => {
                headers.append('API_KEY', data.json().apiKey);
                headers.append('DEVICE_ID', data.json().deviceId);
                return headers
            }).catch( error => {
                console.log("error");
                headers.append('API_KEY', 'TEST');
                headers.append('DEVICE_ID', 'TEST');
                return headers;
            }
        );
    }

/** retrieves ALL the participants from the database */
    getAllParticipants(): Observable<Array<Participant>> {

         return this.getUserHeaders().flatMap( data => {
            return this.http.get('someUrl', {headers: data}).map(response => {
                return response.json();
            });
        });
   }

http://plnkr.co/edit/A0tEB9EUodWQS6AnqrtH?p=info

(注意:Observable.fromPromise()在这里不起作用,所以我创建了两个返回promise的方法-现在我想使用getUserHeaders()的值在get参与者()和仍然返回的promise/可观察的get参与者()和没有从getUserHeaders()


共有2个答案

仲孙铭
2023-03-14

就个人而言,我的问题的解决方案是使用行为主体

在用(数据来源):

private theBoolean: BehaviorSubject<boolean>;

constructor() {
    this.theBoolean = new BehaviorSubject<boolean>(false);
}

public getTheBoolean(): Observable<boolean> {
    return this.theBoolean.asObservable();
}

发出布尔值的新值

public setTheBoolean(newValue: boolean): void {
    this.theBoolean.next(newValue);
}

在组件中(数据的用户):

this.theService.getTheBoolean().subscribe(value => console.log(value));

Reddit上的“pashozator”功劳

尹雅健
2023-03-14

将您的getUserHeaders()更改为:

getUserHeaders(): Observable<any> { return Observable.of(NativeStorage.getItem("user"); }

然后构造你的头对象在get参与者()。这样,您可以保持平面地图

 类似资料:
  • 学习观察和Angular2。我想找出在多个Angular2组件之间共享可观察到的最佳实践。作为可观察的默认值是不是多播。因此,我的应用程序的不同部分的每个订阅将打开一个新的流(再次调用我的API服务器!)。此外,我需要分享价值,并获得可观察到的最新价值。我听到人们使用行为主题。但这真的很令人困惑,我找不到一个好的例子。以下是我如何在我的AuthService中处理这个问题: 在Angular2组件

  • 我有一个带有http请求的服务,它返回我的标题的可观察到的内容 servise.ts 在我的组件中,我有一个函数从service get Request设置。看起来是这样的: 问题是,有时我接收到带有空标签的标题,不需要显示它们,所以我需要对其进行过滤,并对此标题发送.delete()请求。我尝试了类似的方法(想法是在之前添加,然后在另一个subscribe内部调用。)差不多吧 但不确定这是不是个

  • 我有2个API调用第二个调用使用第一个调用返回的东西。有了promise,这很容易: 我将如何使用可观测数据来实现这一点?

  • 函数应该从get请求返回一个 在这种情况下,我只能在为真时执行请求,否则我在函数

  • 我有一个组件订阅服务中的一个可观察对象。该方法反过来订阅另一个服务中的可观察对象。我想将一个数组从最后一个服务传递回第一个服务,然后第一个服务将该数组传递回组件。更具体地说,该组件调用其本地服务,然后调用一个数据服务,该数据服务通过http客户端访问我的数据库。http客户端正在工作,数据服务将数组返回给本地服务。本地服务接收数组,但我不知道如何将该数组作为可观察对象传递回组件。以下是简短的代码块

  • 学习角得到服务和组件和可观察性。 我正在尝试在我的演示应用程序中实现暗模式。该控件由一个服务完成,该服务根据浏览器默认值(如果找到)设置暗主题。 它在应用程序组件中初始化,以便以后在应用程序中放置控制开关。 暗模式从布尔值开始工作,因此为true或false。据我所知,使用一个可观察对象是不够的,因为我希望多个订阅者都以两种方式绑定到订阅,每种方式在服务中切换这些可观察对象。到目前为止,我很肯定这