输入 '(token: string) => Observable<{ headers: HttpHe aders; }>' 不可分配给类型 'Observable<any>'

生物

我一直在阅读 rxjs 和 angular 教程,试图了解 Observables 以及如何将它们链接在一起。根据我读过的所有内容,下面的代码应该可以工作。但它没有,我不明白为什么。

我试图从存储中获取一个令牌(用 getFakeToken 方法伪造那部分,因为它编译得很好),然后将该令牌放入一个 httpHeaders 对象中,该对象应该包装在一个 observable 中,然后我可以将它与另一个调用链接在一起一个网络服务并在一天结束时返回可观察的(这就是我不使用订阅的原因)。我已经取消了对 Web 服务的最后一次调用(将使用 buildHttpOptions 方法中内置的 http 选项),因为错误出在 buildHttpOptions 行上。

我不确定我是否正确解释了所有内容,所以这是另一种表达方式:我试图异步获取令牌,将该令牌插入到 httpOptions 对象中,然后(在将来的代码迭代中return 语句末尾的另一个“.pipe()”),使用它来异步调用 Web 服务并返回包装在 observable 中的结果。前两部分(获取令牌并将其插入对象)失败,我已将它们包含在下面的代码中。

我收到的错误消息:

[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>'.

代码:

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$);
}
弗里多

您可以使用map运算符将 Observable 中的对象转换为不同的对象。然后用于switchMap链接您的 http 请求。

getGetData(): Observable<any> {
  return this.getFakeToken().pipe(
    map(token => ({
      headers: new HttpHeaders({
        'Content-Type': 'application/json',
        'authorization': token
      })
    })),
    switchMap(headers => /* your http request that returns an Observable */)
  );
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

TS2322:类型“ Observable <{}>”不可分配给类型“ Observable <Hero>”

来自分类Dev

不能将void类型的函数分配给Observable <any>类型

来自分类Dev

角拦截器-类型'Observable <未知>'不能分配给类型'Observable <HttpEvent <any >>'

来自分类Dev

类型'Observable <UI [] | 不能将Promise <any >>'分配给类型'Observable <UI []>'。输入'UI [] | Promise <any>'不能分配给类型'UI []'

来自分类Dev

输入'{state:any; dispatch:React.Dispatch <{类型:字符串; 值:任何;}>; }'不可分配给type

来自分类Dev

类型'string'不可分配给类型'“” | “,” | “” | “。”'

来自分类Dev

类型'Observable <Observable <Response >>'不可分配给类型'Observable <Response>'

来自分类Dev

类型'Observable <Promise <any >>'不可分配给类型'Observable <myRec []>'。缺少类型“ Promise <any>”

来自分类Dev

类型“ any []”不可分配给类型“从不”

来自分类Dev

TS2322:输入'Todo [] | “ null”不可分配给“ Todo []”类型。类型“ null”不可分配给类型“ Todo []”

来自分类Dev

React / TypeScript-输入'false | 元素”不可分配给“元素”类型

来自分类Dev

类型“ Observable <any>”不可分配给类型“ StoresSummaryResults”。类型“ Observable <any>”中缺少属性“ Data”

来自分类Dev

类型 'string' 不可分配给类型 '(token: string) => void

来自分类Dev

RXJS Observable 枚举类型,类型 'Observable<Type>' 不可分配给类型 'Type'

来自分类Dev

rxjs - [ts] 输入 'Observable<{} | T>' 不可分配给类型 'Observable<T>'

来自分类Dev

类型“AngularFireList<{}>”不可分配给类型“FirebaseListObservable<any>”

来自分类Dev

类型对象不可分配给类型 any[]

来自分类Dev

角度:错误 TS2322:类型 'Observable<{}>' 不可分配......使用 share() 运算符

来自分类Dev

类型 Observable<boolean> 不可分配给类型 Observable<HttpResponse<boolean>>

来自分类Dev

类型 'Date' 不可分配给类型 'Observable<Date>' - Angular 6+

来自分类Dev

输入'可观察的<{} | IProduct[]>' 不可分配给类型 'Observable<IProduct[]>'

来自分类Dev

类型 'void' 不可分配给类型 '((err: any) => void)

来自分类Dev

类型 'Observable<Observable<Object[]>>' 不可分配给类型 'Observable<Object[]>'

来自分类Dev

错误 TS2322:类型 'string' 不可分配给类型 'Type<any>'。在角 7

来自分类Dev

Angular 6 GridDataResult' 不可分配给类型 'Observable<GridDataResult>

来自分类Dev

输入 'Observable<any[] | Observable<any[]>>' 不可分配给类型 'Observable<any[]>'

来自分类Dev

类型 '() => void' 不可分配给类型 'string'

来自分类Dev

错误 TS2322:类型“Observable<{}[]>”不可分配给类型“Observable<Archive[][]>”

来自分类Dev

可观察的<void | AuthError>' 不可分配给类型 'Observable<Action>

Related 相关文章

  1. 1

    TS2322:类型“ Observable <{}>”不可分配给类型“ Observable <Hero>”

  2. 2

    不能将void类型的函数分配给Observable <any>类型

  3. 3

    角拦截器-类型'Observable <未知>'不能分配给类型'Observable <HttpEvent <any >>'

  4. 4

    类型'Observable <UI [] | 不能将Promise <any >>'分配给类型'Observable <UI []>'。输入'UI [] | Promise <any>'不能分配给类型'UI []'

  5. 5

    输入'{state:any; dispatch:React.Dispatch <{类型:字符串; 值:任何;}>; }'不可分配给type

  6. 6

    类型'string'不可分配给类型'“” | “,” | “” | “。”'

  7. 7

    类型'Observable <Observable <Response >>'不可分配给类型'Observable <Response>'

  8. 8

    类型'Observable <Promise <any >>'不可分配给类型'Observable <myRec []>'。缺少类型“ Promise <any>”

  9. 9

    类型“ any []”不可分配给类型“从不”

  10. 10

    TS2322:输入'Todo [] | “ null”不可分配给“ Todo []”类型。类型“ null”不可分配给类型“ Todo []”

  11. 11

    React / TypeScript-输入'false | 元素”不可分配给“元素”类型

  12. 12

    类型“ Observable <any>”不可分配给类型“ StoresSummaryResults”。类型“ Observable <any>”中缺少属性“ Data”

  13. 13

    类型 'string' 不可分配给类型 '(token: string) => void

  14. 14

    RXJS Observable 枚举类型,类型 'Observable<Type>' 不可分配给类型 'Type'

  15. 15

    rxjs - [ts] 输入 'Observable<{} | T>' 不可分配给类型 'Observable<T>'

  16. 16

    类型“AngularFireList<{}>”不可分配给类型“FirebaseListObservable<any>”

  17. 17

    类型对象不可分配给类型 any[]

  18. 18

    角度:错误 TS2322:类型 'Observable<{}>' 不可分配......使用 share() 运算符

  19. 19

    类型 Observable<boolean> 不可分配给类型 Observable<HttpResponse<boolean>>

  20. 20

    类型 'Date' 不可分配给类型 'Observable<Date>' - Angular 6+

  21. 21

    输入'可观察的<{} | IProduct[]>' 不可分配给类型 'Observable<IProduct[]>'

  22. 22

    类型 'void' 不可分配给类型 '((err: any) => void)

  23. 23

    类型 'Observable<Observable<Object[]>>' 不可分配给类型 'Observable<Object[]>'

  24. 24

    错误 TS2322:类型 'string' 不可分配给类型 'Type<any>'。在角 7

  25. 25

    Angular 6 GridDataResult' 不可分配给类型 'Observable<GridDataResult>

  26. 26

    输入 'Observable<any[] | Observable<any[]>>' 不可分配给类型 'Observable<any[]>'

  27. 27

    类型 '() => void' 不可分配给类型 'string'

  28. 28

    错误 TS2322:类型“Observable<{}[]>”不可分配给类型“Observable<Archive[][]>”

  29. 29

    可观察的<void | AuthError>' 不可分配给类型 'Observable<Action>

热门标签

归档