Можно ли зарегистрировать несколько перехватчиков в Angular 5? - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь добавить HTTP-перехватчик в существующее приложение Angular.

Дело в том, что у него уже есть перехватчик:

  providers: [
    {
      provide: HTTP_INTERCEPTORS,
      useClass: CustomInterceptor,
      multi: true
    }, 
    AuthGuard, AuthService, AuthenticationInterceptor],

Столько, сколько я знаю оконцепция перехвата, они могут быть соединены друг с другом.Таким образом я попробовал это:

  providers: [
    {
      provide: HTTP_INTERCEPTORS,
      useClass: CustomInterceptor, // existing interceptor
      multi: true
    }, AuthGuard, AuthService,
    {
      provide: HTTP_INTERCEPTORS,
      useClass: AuthenticationInterceptor, // my interceptor
      multi: true
    }],

И все работает.Но я не уверен, переопределил ли я существующий перехватчик или нет.Можно ли зарегистрировать несколько перехватчиков в Angular 5?Они отменяют друг друга?Или они просто работают как рабочие станции в конвейере и дополняют друг друга?

1 Ответ

0 голосов
/ 20 мая 2018

TL; DR Да, предоставление нескольких перехватчиков - это нормально, и они работают по порядку.

Но я не уверен, переопределил ли я существующий перехватчик или нет.

Запустив код и проверив, вы сможете увидеть, происходит это или нет.В любом случае в документации четко указано, что может быть несколько перехватчиков, когда речь идет об их порядке:

Angular применяет перехватчики в том порядке, в котором вы их предоставляете.Если вы предоставите перехватчики A, то B, затем C, запросы будут поступать в A-> B-> C, а ответы будут выходить из C-> B-> A.

В той же документации,В нескольких параграфах выше также объясняется, что для этого уместна опция multi:

Обратите внимание на параметр multi: true.Этот обязательный параметр сообщает Angular, что HTTP_INTERCEPTORS - это токен для мультипровайдера, который вводит массив значений, а не одно значение.

Документацию по этому флагу можно найти здесь .

...