gpt4 book ai didi

javascript - 类型 'mergeMap' 上不存在属性 'Observable'

转载 作者:行者123 更新时间:2023-11-30 11:08:37 24 4
gpt4 key购买 nike

我正在 Ionic 4 应用程序中创建一个 HttpInterceptor。我想从 local storage 读取 Bearer Authorization token .

我尝试使用 mergeMap 但它总是返回错误:

Property 'mergeMap' does not exist on type 'Observable<any>'

这是来自 token.interceptor.ts 的完整代码

import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpResponse, HttpErrorResponse } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable, throwError, from } from 'rxjs';
import { map, catchError } from 'rxjs/operators';
import { Router } from '@angular/router';
import { Storage } from '@ionic/storage';

@Injectable()
export class TokenInterceptor implements HttpInterceptor {

token: any;

constructor(private router: Router, private storage: Storage) {}

intercept(request: HttpRequest < any > , next: HttpHandler): Observable < HttpEvent < any >> {

return from(this.storage.get('User')).mergeMap((val) => {
if (this.token) {
request = request.clone({
setHeaders: {
'Authorization': this.token
}
});
}

if (!request.headers.has('Content-Type')) {
request = request.clone({
setHeaders: {
'content-type': 'application/json'
}
});
}

request = request.clone({
headers: request.headers.set('Accept', 'application/json')
});

return next.handle(request).pipe(
map((event: HttpEvent < any > ) => {
if (event instanceof HttpResponse) {
console.log('event--->>>', event);
}
return event;
}),
catchError((error: HttpErrorResponse) => {
if (error.status === 401) {
if (error.error.success === false) {
// this.presentToast('Login failed');
} else {
this.router.navigate(['/']);
}
}
return throwError(error);
}));
})

}

}

根据 this question ,我试过这种格式:

return from(...).pipe(mergeMap(...));

但它不起作用。

我应该尝试什么?

最佳答案

您正在使用旧 RxJS API 的语法:

import 'rxjs/operators/mergeMap';
myObs$.mergeMap(anotherObs$);

由于 RxJS API 发生了变化(5.5+ 版本),mergeMap 不再是 Observable 上的方法,而是一个函数,您必须在 中使用它管道 运算符,像这样:

import { mergeMap } from 'rxjs/operators';
myObs$.pipe(mergeMap(anotherObs$));

关于javascript - 类型 'mergeMap' 上不存在属性 'Observable<any>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54679742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com