angular 8: Как создать перехватчик в Angular cli - PullRequest
0 голосов
/ 22 апреля 2020

Я выполняю команду

ng g interceptor error

, где ошибка - имя перехватчика

, но сталкиваюсь с проблемой, как показано ниже:

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

Нужно ли устанавливать любой пакет первым?

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Если кто-то хочет создать перехватчик загрузки. Ниже приведен пример перехватчика загрузки, создайте его, как показано ниже, а затем вставьте 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 голосов
/ 22 апреля 2020

Похоже на схемы c добавлена ​​поддержка генерации перехватчиков в CLI 9.0.0

Итак, вы можете либо обновить до Angular 9, либо написать свою собственную схему c, хотя в краткосрочной перспективе, если вы не можете / не хотите обновиться до Angular 9, вероятно, проще просто написать свой перехватчик, а не генерировать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...