angular - 如何使用@HostBinding 影响指令子级?
问题描述
我正在实现 bootsrap 的单按钮下拉菜单(docs)。
为了使其“开放”,它必须show
向 main<div>
和<ul>
.
这是关闭的:
<div class="btn-group">
<button
type="button"
class="btn btn-primary dropdown-toggle">
Manage (Using Directive) <span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a style="cursor: pointer;">Edit </a></li>
<li><a style="cursor: pointer;">Delete </a></li>
</ul>
</div>
这是开放的:
<div class="btn-group show">
<button
type="button"
class="btn btn-primary dropdown-toggle">
Manage (Using Directive) <span class="caret"></span>
</button>
<ul class="dropdown-menu show">
<li><a style="cursor: pointer;">Edit </a></li>
<li><a style="cursor: pointer;">Delete </a></li>
</ul>
</div>
我试图让它作为一个指令工作:
<div class="btn-group" appDropdown>
<button
type="button"
class="btn btn-primary dropdown-toggle">
Manage (Using Directive) <span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a style="cursor: pointer;">Edit </a></li>
<li><a style="cursor: pointer;">Delete </a></li>
</ul>
</div>
还有 dropdown.directive.ts:
import { Directive, HostListener, HostBinding } from '@angular/core';
@Directive({
selector: '[appDropdown]'
})
export class DropdownDirective {
@HostBinding('class.show') isOpen = false;
@HostListener('click') toggleOpen() {
this.isOpen = !this.isOpen;
}
}
这样我只能将show
类添加到<div>
而不将其添加到<ul>
,
有没有办法影响指令子项?
这是一个StackBlitz
这是一个相关的问题,但它没有提到任何@HostBinding
解决方案
推荐阅读
- elixir - 在创建表中添加对另一个表的引用
- python - 如何在python中的localhost url中传递json数据?
- python - 数据包嗅探仅使用原始套接字获取私有 IP 地址
- c# - C# Serilog 如何记录指标?
- python - 如何通过递归将内容附加到列表中?
- flutter - 如何在 Firestore Flutter 中连续设置文档
- javascript - 无法使用 XMLHttpRequest() 检索数据
- java - Pinterest API:在 entity_fields 参数中传递多个值
- reactjs - React App 编译失败,因为 eslintrc 文件在遥远的父目录中
- sql - 将 MERGE 语句替换为插入/删除/更新