web-dev-qa-db-ja.com

angular 8:Angular cliでインターセプターを作成する方法

コマンドを実行しています

ng g interceptor error

ここで、エラーはインターセプターの名前です

しかし、以下のような問題に直面しています:

An unhandled exception occurred: Schematic "interceptor" not found in collection "@schematics/angular".

最初にパッケージをインストールする必要がありますか?

1
sparsh610

インターセプターを生成するための回路図サポートが追加されたようです CLI 9.0.

したがって、Angular 9にアップグレードするか、独自のカスタム回路図を作成することができますが、短期的には、Angularにアップグレードできない/しない場合9、インターセプターを生成する代わりに、自分で作成する方がおそらく簡単です。

2
GreyBeardedGeek

ローディングインターセプターを作成しようとしている人。以下は、ローディングインターセプターのサンプルです。以下のように作成し、プロバイダーの親モジュールの配列にLoadingInterceptor、LoadingIndicatorInterceptorを挿入します。

import { LoadingIndicatorService } from './file-path';
import { Injectable } from '@angular/core';
import {
    HttpEvent,
    HTTP_INTERCEPTORS,
    HttpInterceptor,
    HttpHandler,
    HttpRequest,
  } from '@angular/common/http';
  import { Observable } from 'rxjs';
  import { finalize, tap } from 'rxjs/operators';


@Injectable()
export class LoadingIndicatorInterceptor implements HttpInterceptor {

  constructor(public loadingIndicatorService: LoadingIndicatorService) {}

  intercept (req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    // emit onStarted event before request execution
    this.loadingIndicatorService.onStarted(req);

    return next
      .handle(req)
      // emit onFinished event after request execution
      .pipe(
        finalize(() => this.loadingIndicatorService.onFinished(req)), tap( r => {
        })
      );
  }
}

export const LoadingInterceptor = {
  provide: HTTP_INTERCEPTORS,
  useClass: LoadingIndicatorInterceptor,
  multi: true,
};

providers: [ LoadingInterceptor, LoadingIndicatorInterceptor] //この行は、インターセプターを使用可能にするモジュール内にある必要があります

0
anonymous