首页 > 解决方案 > 为什么提供者在组件中不起作用?

问题描述

我提供PAGINATION_INTERAGENCY使用工厂:

export const PAGINATION_INTERAGENCY = new InjectionToken<any>('PAGINATION_INTERAGENCY');

 providers: [
        {
            provide: PAGINATION_INTERAGENCY,
            useFactory: () =>
                new PaginationService({
                    id: 'serverPagination',
                    offset: 0,
                    limit: 20,
                    sortByDefault: '+docid',
                    pageSizeOptions: [10, 20, 100],
                    currentPage: 1,
                    itemsPerPage: 20,
                }),
        },
        InteragencyCooperationService,
        InteragencyCooperationRepository,
    ],

然后在组件构造函数中我使用提供者:

constructor(
    @Inject(PAGINATION_INTERAGENCY) private paginationService: PaginationService) {}

首次加载模块时,出现此错误:

ERROR NullInjectorError: R3InjectorError(InteragencyModule)[PaginationService -> PaginationService -> PaginationService -> PaginationService]: 
  NullInjectorError: No provider for PaginationService!

如何解决?

标签: angular

解决方案


你的注射是错误的。看这里:工厂-供应商-usefactory | 角度.io

可能这样的事情会起作用:

    {
        provide: PAGINATION_INTERAGENCY,
        useFactory: PaginationService,
        deps: [/*your dependencies goes here*/]
    }

推荐阅读