Angular9+Nebular:表格Tooltip切换无响应及初始状态异常问题
解决方案
问题1:切换开关状态未正确检测
你的代码中condor-table的[showTooltip]绑定了固定值true,没有和开关变量showTooltipFlag关联,导致开关状态变化时表格Tooltip不会同步更新。同时父组件中的ngOnChanges监听的showTooltip并非组件输入属性,完全无效,可直接删除。
问题2:Tooltip默认激活
初始时showTooltipFlag未赋值,默认是undefined,但condor-table的showTooltip设为true,导致Tooltip默认激活。需要初始化变量并绑定到表格组件。
修改步骤:
- 初始化开关变量
在组件类中显式初始化showTooltipFlag为false,确保初始状态禁用Tooltip:
showTooltipFlag = false;
- 绑定表格Tooltip属性到开关变量
修改condor-table的[showTooltip]绑定,从固定值改为开关变量:
<condor-table *ngIf="!isLoading" [tableTemplates]="templates | async" [columnsDefinition]="tableDef" (rowInfo)="rowClicked($event)" [dataCondor]="messages$ | async" [showTooltip]="showTooltipFlag" <!-- 替换为变量 --> ></condor-table>
- 优化开关状态处理(可选更简洁写法)
将原toggleTooltip方法替换为属性 setter,自动处理状态变化和DOM类操作,同时使用双向绑定简化模板:
private _showTooltipFlag = false; get showTooltipFlag(): boolean { return this._showTooltipFlag; } set showTooltipFlag(value: boolean) { this._showTooltipFlag = value; // 处理Tooltip显示/隐藏的DOM类 value ? this._render.removeClass(this._document.body, "hide-tooltip") : this._render.addClass(this._document.body, "hide-tooltip"); }
模板中的开关改为双向绑定:
<nb-toggle [(checked)]="showTooltipFlag"></nb-toggle>
如果保留原toggleTooltip方法,确保逻辑正确即可:
toggleTooltip() { this.showTooltipFlag = !this.showTooltipFlag; this.showTooltipFlag ? this._render.removeClass(this._document.body, "hide-tooltip") : this._render.addClass(this._document.body, "hide-tooltip"); }
- 确认CSS类生效
确保hide-tooltip类能正确隐藏Tooltip,例如:
.hide-tooltip .nb-tooltip { display: none !important; }
内容的提问来源于stack exchange,提问作者Carlos
相关产品推荐
相关产品推荐

