在 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)
通过 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)
]
};
相关博问:angular 依赖注入问题:如何避免在很多 component 中注册同一个 class
– dudu 1个月前