Как импортировать угловой HTTP-перехватчик только для дочернего модуля - PullRequest
0 голосов
/ 14 ноября 2018

Я импортировал HttpClientModule в AppModule.

import { HttpClientModule } from '@angular/common/http';

export const AppRoutes: Routes = [
  { path: '', redirectTo: 'dashboard', pathMatch: 'full' },
  {
    path: 'account',
    loadChildren: './auth/auth.module#AuthModule'
  },
  {
    path: 'dashboard',
    loadChildren: './content/content.module#ContentModule'
  }
];

Как только я запускаю сайт, он будет перенаправлен на модуль панели мониторинга (модуль с отложенной загрузкой), где я добавил http-перехватчик.

import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { HttpInterceptorService } from '../services/http-interceptor.service';
@NgModule({
providers : [
      { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, multi: true }
    ]
})

Но это не работает. Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 14 ноября 2018

Http-перехватчик - это просто служба, не будет никакой разницы в том, чтобы внедрить его в какие-либо модули - просто сделайте то же самое в AppModule, что поможет вам работать - если в случае, если у вас возникла та же проблема, вы можете попробовать ввестикак показано ниже в вашем общем модуле

Обычный шаблон для достижения, который заключается не в том, чтобы выставлять провайдеров непосредственно в объявлении @NgModule, а в статической функции forRoot, например:

export class SharedModule {
  static forRoot(): ModuleWithProviders {
    return {
      ngModule: SharedModule,
      providers: [
         { provide: HTTP_INTERCEPTORS, useClass: HttpInterceptorService, multi: true }
      ]
    };
  }
}

Вы можетезатем импортируйте ваш SharedModule на AppModule как SharedModule.forRoot()

Надеюсь, это сработает - Счастливое кодирование

...