Angular Type'(token:string)=>Observable'不能分配给Type'Observable'
我一直在学习rxjs和angular教程,试图理解可观测数据以及如何将它们链接在一起。根据我读到的所有内容,下面的代码应该可以工作。但事实并非如此,我也不明白为什么 我试图从存储中获取一个令牌,用getFakeToken方法伪造了该部分,因为这样编译很好,然后将该标记填充到httpHeaders对象中,该对象应包装在一个observable中,然后我可以将该对象与另一个对web服务的调用链接在一起,并在一天结束时返回该observable,这就是我不使用subscribe的原因。我已经完成了对web服务的最后一次调用,该服务将使用buildHttpOptions方法中构建的http选项,因为错误在buildHttpOptions行上 我不确定我是否正确地解释了所有内容,所以这里有另一种说法:我尝试同步获取一个令牌,将该令牌插入到httpOptions对象中,然后在将来的代码迭代中,它将是另一个.pipe,位于return语句的末尾,使用它来同步调用一个web服务,并返回封装在可观察对象中的结果。获取令牌并将其插入对象的前两个部分失败了,我已经在下面的代码中包含了它们 我收到的错误消息:Angular Type'(token:string)=>Observable'不能分配给Type'Observable',angular,rxjs,observable,Angular,Rxjs,Observable,我一直在学习rxjs和angular教程,试图理解可观测数据以及如何将它们链接在一起。根据我读到的所有内容,下面的代码应该可以工作。但事实并非如此,我也不明白为什么 我试图从存储中获取一个令牌,用getFakeToken方法伪造了该部分,因为这样编译很好,然后将该标记填充到httpHeaders对象中,该对象应包装在一个observable中,然后我可以将该对象与另一个对web服务的调用链接在一起,并在一天结束时返回该observable,这就是我不使用subscribe的原因。我已经完成了对w
[ng] ERROR in src/app/web-api/api.service.ts(57,50): error TS2322: Type '(token: string) => Observable<{ headers: HttpHe
aders; }>' is not assignable to type 'Observable<any>'.
[ng] Property '_isScalar' is missing in type '(token: string) => Observable<{ headers: HttpHeaders; }>'.
[ng] src/app/web-api/api.service.ts(67,31): error TS2345: Argument of type 'Observable<any>' is not assignable to parame
ter of type 'OperatorFunction<string, any>'.
[ng] Type 'Observable<any>' provides no match for the signature '(source: Observable<string>): Observable<any>'.
代码:
可以使用贴图操作符将可观察对象中的对象转换为其他对象。然后使用switchMap链接您的http请求
GetData:可观察的{
返回此.getFakeToken.pipe
maptoken=>{
标题:新的HttpHeaders{
“内容类型”:“应用程序/json”,
“授权”:令牌
}
},
switchMapheaders=>/*返回可观察的*/
;
}
请你再解释清楚一点,我不明白你想做什么?!让我换一种说法。我正试图让这篇文章中的代码在没有错误的情况下编译。我不明白这个错误。我要求人们解释我做错了什么,为什么我会出错,以及我能做些什么来修复它。你能说出应该根据哪个来源工作吗?通常,我会将令牌持久化到本地存储上,并尝试在其不为null时进行检索
private getFakeToken(): Observable<string> {
return of("123abc");
}
getGetData(): Observable<any> {
let getToken$ = this.getFakeToken();
let buildHttpOptions$: Observable<any> = (token: string) => { return of(
{
headers: new HttpHeaders({
'Content-Type': 'application/json',
'authorization': token
})
})};
return getToken$.pipe(buildHttpOptions$);
}