angular - Ngx-bootstrap:当没有可用选项时禁用下拉按钮
问题描述
当没有可用的子选项时,我们如何禁用下拉菜单?我有一些类似于下面的代码:
组件.html
<div class="btn-group" dropdown>
<button dropdownToggle type="button" class="btn btn-default dropdown-toggle" [disabled]="!isOptionsVisible()">
Request Actions <span class="caret"></span>
</button>
<ul id="dropdown-actions" *dropdownMenu class="dropdown-menu" #optionsList>
<li *ngIf="condition1">
<a class="dropdown-item">Option1</a>
</li>
<li *ngIf="condition2">
<a class="dropdown-item">Option2</a>
</li>
</ul>
</div>
组件.ts
@ViewChild('optionsList') optionsList;
isOptionsVisible() {
let visible = true;
if (this.optionsList) {
visible = this.optionsList.nativeElement.querySelectorAll('li').length > 0;
}
return visible;
}
上面的代码在模板是在 bootstrap 3 中编写时可以工作,但是在我们将代码迁移到 ngx-bootstrap 后,我发现<li>
元素不存在,直到单击按钮。这导致条件if (this.optionsList)
总是失败。
解决方案
推荐阅读
- google-apps-script - 我拥有的项目未显示在“我的项目”中
- javascript - 状态数组上的多个不可变更改
- javascript - Mongodb查询哪些商店在给定时间开放
- python-3.x - 气流心跳警告日志导致 ssh 连接断开
- git - 如何从用户机器导入或添加 bitbucket rsa 密钥以便 git clone 工作?
- r - 向线性模型添加多项式项
- android - MVVM 模式中的 LiveData 与改造 kotlin
- javascript - 如何解决错误(发送到客户端后无法设置标头)
- timeout - Bonita BPM 停止工作或没有响应和磁盘队列长度
- javascript - 如果我们通常需要在继续之前处理一个承诺,为什么不返回一个已经处理的响应而不是一个承诺的响应呢?