You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义dewQtip指令手动触发ngbTooltip时出现NG0203错误

手动实例化NgbTooltip触发NG0203注入上下文错误

Bug描述

我在qtip.directive.ts中定义了dewQtip指令,功能和ngbTooltip指令基本一致,还包含组织生态内需要维护的自定义逻辑。指令里我通过this.ngbToolTip.open();手动触发tooltip打开,但实例化ngbToolTip时用了以下代码:

this.ngbToolTip = new NgbTooltip(
        this._elementRef,
        this._renderer,
        this.injector,
        this.viewContainerRef,
        this.ngbTooltipConfig,
        this.ngZone,
        document,
        this._cdRef,
        this._appRef
      );

错误就是这里导致的。

错误信息

Error: NG0203: inject()必须从注入上下文调用,例如构造函数、工厂函数、字段初始化器或使用runInInjectionContext的函数。

调用栈

错误根源在positioning.ts的这段代码:

export function ngbPositioning() {
    const rtl = inject(NgbRTL);

调用链如下:

  1. positioning.ts中的ngbPositioning()函数调用inject(NgbRTL)
  2. tooltip.ts中通过private _positioning = ngbPositioning();执行该函数
  3. qtip.directive.ts中this.ngbToolTip = new NgbTooltip(.....)实例化时触发上述调用

复现情况

已创建最小化复现示例。

版本信息

  • Angular: 16.1.7
  • ng-bootstrap: 15.1.2
  • Bootstrap: 5.2.3

临时方案

目前仍在排查。尝试过降级ng-bootstrap版本(问题是从Angular11升级到16后出现的),但旧版本不支持Angular16,暂未找到可行方案。


内容的提问来源于stack exchange,提问作者Gods-Favorite-Idiot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 15:15:12