相关疑难解决方法(0)

Angular2 - 在另一个Observable中使用Observable返回方法的值

问题

我不知道如何使用getUserHeaders()我当前返回的Observable的值http.get.

当前错误

Type 'Observable<void>' is not assignable to type 'Observable<Participant[]>'

预期结果

能够使用我的Observable返回方法的值getUserHeaders()作为调用中的headers属性http.而只返回http调用的Observable.

以前的代码

(使用由getUserHeaders()(不是Observable或者Promise)返回的harcoded Headers .

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

目前的代码

通过使用TypeScript的答案从Angular2中的http数据链接RxJS Observables,我来到了该flatMap方法.(注意此代码当前抛出'当前错误')

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 …
Run Code Online (Sandbox Code Playgroud)

observable rxjs typescript ionic2 angular

7
推荐指数
1
解决办法
6056
查看次数

ionic 3从离子存储设置默认请求标头

这个问题有点类似Ionic 2 - 从存储值中获取令牌并在HTTP请求之前设置Header(不是重复)

但问题与从本地存储返回值有关.

我需要为所有请求设置默认标头(授权标记).必须是典型问题,但无法找到解决方案.以及大多数可用信息 - 关于为每个请求设置它.这很简单,但不太合理. - 如果可能的话,为什么设置为所有请求的原因.

我试过了:

情况1:

import {Injectable} from "@angular/core";
import {BaseRequestOptions, RequestOptions, RequestOptionsArgs} from "@angular/http";
import { Storage } from '@ionic/storage';


    @Injectable()
    export class MyRequestOptions extends BaseRequestOptions {
      constructor(private storage: Storage) {
        super();
        this.headers.set('Content-Type', 'application/json');
      }
      merge(options?: RequestOptionsArgs): RequestOptions {
        const newOptions = super.merge(options);

        console.log("setting auth header");

        function setAuthHeader(storage) {
          return storage.get('jwt_token').then(value => {
            newOptions.headers.set('Authorization',`Bearer ${value}`);
            return newOptions;
          });
        }

        return setAuthHeader(this.storage).then(()=>{
          return newOptions;
        })
      }
    }
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它只是没有编译,但它是为了表明我想做什么.

案例#2:

@Injectable()
export …
Run Code Online (Sandbox Code Playgroud)

typescript ionic-framework angular

6
推荐指数
2
解决办法
9294
查看次数

标签 统计

angular ×2

typescript ×2

ionic-framework ×1

ionic2 ×1

observable ×1

rxjs ×1