Как предоставить инъекционный токен инъекционному сервису

У меня есть модуль с сервисом, которым я делюсь

      @Injectable({providedIn: 'root'})
export class SharedService{
    constructor(
        private store: Store,
        @Inject(API_REQUESTS) private apiRequests: ApiRequestInterface[]
    ) {
        debugger;
    }

Как видите, я хочу иметь возможность передавать список запросов API в эту службу, поэтому в моем общем модуле я настроил следующее:

      export const API_REQUESTS = new InjectionToken<ApiRequestInterface[]>('ApiRequests');

@NgModule({
    declarations: [],
    providers: [],
    imports: [
        CommonModule,
        NgxsModule.forFeature(
            [
                ApiState
            ]
        )
    ]
})

export class ApiModule {
    constructor(@Optional() @SkipSelf() parentModule: ApiModule ) {
    }

    static forRoot(apiRequests?: ApiRequestInterface[]): ModuleWithProviders<ApiModule> {
        return {
            ngModule: ApiModule,
            providers: [
                {provide: API_REQUESTS, useValue: apiRequests}
            ]
        };
    }
}

И в модуле реализации я определяю

       providers: [
   SharedService
 ],
 imports: [
   ApiModule.forRoot([])
 ]

но когда я использую SharedService в своих компонентах моего модуля реализации, я получаю:

      NullInjectorError: No provider for InjectionToken ApiRequests

Что мне не хватает?

0 ответов

Другие вопросы по тегам