簡體   English   中英

錯誤:無法讀取未定義的屬性(讀取“管道”)Angular12

[英]Error: Cannot read properties of undefined (reading 'pipe') Angular12

我在發送 ajax 請求時遇到錯誤,

ERROR TypeError: Cannot read properties of undefined (reading 'pipe')

ajax-loader.interceptor.ts class

 export class AjaxLoaderInterceptor implements HttpInterceptor {
 private loaderProp = 'ajax_loader';
 constructor(private activeAjaxLoadersService: ActiveAjaxLoadersService) {}

 intercept(
   request: HttpRequest<any>,
   httpHandler: HttpHandler
 ): Observable<HttpEvent<any>> {
   console.log('ajax loader', request);
   const loaderName = request.headers.has(this.loaderProp)
     ? request.headers.get(this.loaderProp)
     : null;
   console.log('loaderName', loaderName);
   const updatedHeaders = request.headers.has(this.loaderProp)
     ? request.headers.delete(this.loaderProp)
     : request.headers;
   const updatedRequest = request.clone({ headers: updatedHeaders });
   console.log('updatedHeaders', updatedHeaders, updatedRequest);
   this.updateLoaderState(loaderName, XHR_REQUEST_STATES.PROGRESS);

   return httpHandler.handle(updatedRequest).pipe(
     tap((event: HttpEvent<any>) => {
       console.log('httpHandler', event);
       if (event instanceof HttpResponse) {
         this.updateLoaderState(loaderName, 'success', event);
       }
     }),
     (responseError: any): any => {
       if (responseError instanceof HttpErrorResponse) {
       }
     }
   );
 }

Providers code:

providers: [
    {
      provide: HTTP_INTERCEPTORS,
      useClass: AjaxLoaderInterceptor ,
      multi: true
    }
  ]

相同的代碼在 angular 8 中工作,但升級到 v12 后它壞了。

我在 stackblitz 中創建了可重現的代碼示例,請在此處找到示例

任何幫助,將不勝感激。 謝謝!

在您的 ajax-loader.interceptor.ts 文件中,在 if 條件之后添加 return 語句,如下所示

   if (responseError instanceof HttpErrorResponse) {
       }

    return responseError;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM