在园子的博客后台升级到 angular 19 的过程中,ng-zorrod-antd 从 15.10 升级到 19.0.0-beta.0
使用 ng-zorrod-antd 15.10 时,有下面的创建 NzPopoverDirective 实例的代码
const elemRef = view.element;
const popover = new NzPopoverDirective(
elemRef,
view,
_resolver,
_renderer,
_noAnimation,
_nzConfigService
);
ng-zorrod-antd 18 与 19 中 NzPopoverDirective 的构造函数都不支持参数,于是改成了下面的代码
const popover = new NzPopoverDirective();
部署后浏览器访问时控制台报错
Uncaught _: NG0203
请问如何解决这个问题?
改为 inject 也是同样的报错
const popover = inject(NzPopoverDirective);
这个错误码对应的错误消息对应的应该是下面的消息,但不知道 Chrome 控制台为什么只显示 NG0203
inject() must be called from an injection context
放在 runInInjectionContext 中 inject 可以解决 NG0203 问题
private readonly _environmentInjector = inject(EnvironmentInjector);
runInInjectionContext(this._environmentInjector, () => {
this._nzPopover = inject(NzPopoverDirective);
});