【发布时间】:2022-01-26 18:16:01
【问题描述】:
我正在创建一个自定义下拉菜单。
菜单包含一些项目,当用户单击这些项目中的任何一个时,它应该保持打开状态。
要检查用户是否在下拉菜单中单击,我通过window.onclick 进行检查,如果event.target.matches('dropdown-content *')。有关上下文,请参阅下面的 sn-p。
<div id="myDropdown" class="dropdown-content">
<div class="dropdown-grid">
<div class="add-offset">
<div class="dd-header">
<div (click)="setupNewCol()"><i class="fas fa-plus plus-sign"></i></div>
</div>
</div>
</div>
</div>
这可行,但是当我使用函数调用将 *ngIf 添加到 div 时,CSS 选择器 'dropdown-content *' 似乎不再起作用。
这是带有*ngIf的HTML
<div id="myDropdown" class="dropdown-content">
<div class="dropdown-grid">
<div class="add-offset">
<div class="dd-header">
<div *ngIf="!settingNewOffset; else offsetSelection" (click)="setupNewCol()"><i class="fas fa-plus plus-sign"></i></div>
<ng-template #offsetSelection>
<div (click)="addCol()">
CLICK ME
</div>
</ng-template>
</div>
</div>
</div>
</div>
随着*ngIf 与ng-template 结合的引入,CSS 选择器不再将点击识别为'.dropdown-content *' 的一部分。为什么会这样?解决这个问题的方法是什么?
【问题讨论】:
标签: html angular css-selectors ng-template angular-structural-directive