首页 新闻 会员 周边 捐助

angular 中如何在 DI 容器中注册 ng-zorro-antd 的 NzContextMenuService

0
悬赏园豆:30 [已解决问题] 浏览: 19次 解决于 2025-01-17 18:30

在 standalone component 的 providers 中已经添加 NzContextMenuService

@Component({
    selector: 'cnb-sidebar-blog-categories',
    templateUrl: './sidebar-blog-categories.component.html',
    styleUrls: ['./sidebar-blog-categories.component.less'],
    providers: [NzContextMenuService],
})

运行时依然报错

NullInjectorError: No provider for _NzContextMenuService!
    at NullInjector.get (core.mjs:1643:21)
    at R3Injector.get (core.mjs:2168:27)
    at R3Injector.get (core.mjs:2168:27)
    at R3Injector.get (core.mjs:2168:27)
    at R3Injector.get (core.mjs:2168:27)
    at injectInjectorOnly (core.mjs:1099:36)
    at ɵɵinject (core.mjs:1105:40)
    at Object.CategoryContextMenuService_Factory [as factory] (category-context-menu.service.ts:11:40)
dudu的主页 dudu | 高人七级 | 园豆:27830
提问于:2025-01-17 13:55
< > 人人可用的开源BI工具
分享
最佳答案
0

通过 ng-zorro-antd 的源码 context-menu.service.ts#L26 知道了 NzContextMenuService 只能在 NgModule 中注册,不允许在 Component 中注册

@Injectable({
  providedIn: NzContextMenuServiceModule
})
export class NzContextMenuService {
}

改为在 app.config.ts 中注册即可解决

export const appConfig: ApplicationConfig = {
    providers: [
        importProvidersFrom(NzContextMenuServiceModule)
    ]
};
dudu | 高人七级 |园豆:27830 | 2025-01-17 18:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册
Top