Я разрабатываю HttpInterceptor. Для разработки этого перехватчика я создаю класс обслуживания, как показано ниже:
import { HttpInterceptor, HttpRequest, HttpHandler } from '@angular/common/http';
export class InterceptorClass implements HttpInterceptor{
intercept(req: HttpRequest<any>, next: HttpHandler){
debugger
req= req.clone({
headers: req.headers.append('currentPlace','New Delhi')
});
return next.handle(req); //Doubt in this line
}
}
Теперь я сомневаюсь, что всякий раз, когда я использую метод .pipe()
после next.handle(req)
, он не выдает никакой ошибки. Код выглядит следующим образом:
import { HttpInterceptor, HttpRequest, HttpHandler } from '@angular/common/http';
export class InterceptorClass implements HttpInterceptor{
intercept(req: HttpRequest<any>, next: HttpHandler){
debugger
req= req.clone({
headers: req.headers.append('currentPlace','New Delhi')
});
return next.handle(req).pipe(tap(()=>{
}));
}
}
Но всякий раз, когда я использую .subscribe()
после next.handle()
, он выдает ошибку. Код выглядит следующим образом:
import { HttpInterceptor, HttpRequest, HttpHandler } from '@angular/common/http';
import { map, tap } from 'rxjs/operators';
export class InterceptorClass implements HttpInterceptor{
intercept(req: HttpRequest<any>, next: HttpHandler){
debugger
req= req.clone({
headers: req.headers.append('currentPlace','New Delhi')
});
return next.handle(req).subscribe((data)=>{
});
}
}
И ошибка, которую мы получаем при подписке:
Type '(req: HttpRequest<any>, next: HttpHandler) => Subscription' is not assignable to type '(req: HttpRequest<any>, next:
HttpHandler) => Observable<HttpEvent<any>>'.
Type 'Subscription' is missing the following properties from type 'Observable<HttpEvent<any>>': _isScalar, source, operator, lift, and 6 more.
Почему она выдает ошибку, когда мы subscribe()
- next.handle()
, потому что япрочитал, что next.handle()
возвращает Observable, следовательно, мы можем подписать его?