Comments 6
Спасибо, очень полезно! Мы тоже начали использовать inject
и ощущения очень положительные.
Однако, можно ли этим инструментом решить вот такую задачу:
Есть module-federation приложение. Код хоста приложения:
@NgModule({
declarations: [],
bootstrap: [AppComponent],
imports: [
AppRoutingModule,
// ...
],
providers: [
provideHttpClient(
withInterceptors([httpAuthInterceptor]),
),
],
})
export class AppModule {}
Элемент роутинга:
{
path: 'my-remote',
loadChildren: () =>
loadRemoteModule({
type: 'manifest',
remoteName: 'my-remote',
exposedModule: './MyModule',
}).then((m) => m.MyModule),
},
Интерцептор, который должен работать только в remote приложении:
export const myErrorInterceptor: HttpInterceptorFn = (req, next) => {
// some code
return next(req).pipe(
catchError((err: HttpErrorResponse) => throwError(err)),
tap((response: any) => handleGraphQLError(response)),
);
};
Если его так же подключить через provideHttpClient
как в хост приложении, то интерцептор не будет срабатывать. Можно ли как-то это решить через inject
?
то интерцептор не будет срабатывать
Тут о каком интерцепторе речь и где ожидается что он должен срабатывать?
Насколько я понял, то при переопределении httpClient не срабатывает интерцептор из родительского приложения (httpAuthInterceptor
) внутри federation module. В таком случае внутри вашего federation module при определении provideHttpClient
укажите withRequestsMadeViaParent
. В таком случае внутри вашего federation module будут работать оба интерцептора, а вне только тот, что указан в родителе.
Извините, httpAuthInterceptor
как раз прекрасно срабатывает, однако myErrorInterceptor
, который находится в MyModule
не срабатывает.
@NgModule({
declarations: [MyComponent],
imports: [],
providers: [
provideHttpClient(
withInterceptors([myErrorInterceptor]),
),
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
export class MyModule {}
Магия Injection Context