我不知道如何使用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) 这个问题有点类似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)