コマンドを実行しています
ng g interceptor error
ここで、エラーはインターセプターの名前です
しかし、以下のような問題に直面しています:
An unhandled exception occurred: Schematic "interceptor" not found in collection "@schematics/angular".
最初にパッケージをインストールする必要がありますか?
インターセプターを生成するための回路図サポートが追加されたようです CLI 9.0.
したがって、Angular 9にアップグレードするか、独自のカスタム回路図を作成することができますが、短期的には、Angularにアップグレードできない/しない場合9、インターセプターを生成する代わりに、自分で作成する方がおそらく簡単です。
ローディングインターセプターを作成しようとしている人。以下は、ローディングインターセプターのサンプルです。以下のように作成し、プロバイダーの親モジュールの配列に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]
//この行は、インターセプターを使用可能にするモジュール内にある必要があります