【发布时间】:2026-01-15 20:05:01
【问题描述】:
我想根据变量的值扩展和收缩子 div 组件,但我希望能够单击该组件(在兄弟的父组件中)以及折叠它。
这是一个stackblitz 示例。我尝试使用在this question 中找到的HostListener,但这对我的情况没有帮助。
@HostListener('document:click', ['$event'])
documentClick(event: MouseEvent) {
// your click logic
}
目标:
- 当我单击子 (hello) 组件时,如果它还没有展开,我希望它展开,如果它已经展开,我希望它收缩
- 当我单击其他任何内容(即父组件或同级组件)时,我希望子 (hello) 组件在展开时收缩。
我不希望子 (hello) 组件在单击父/兄弟时展开。
更新:使用 HostListener
hello.component.html
<div class="box" (click)="clicked()" [ngClass]="{large: isEnlarged}">Hello.component</div>
hello.component.ts
export class HelloComponent {
isEnlarged = false;
clicked() {
this.isEnlarged = !this.isEnlarged;
}
@HostListener('document:click', ['$event'])
documentClick(event: MouseEvent) {
console.log('clicked');
this.isEnlarged = false;
}
}
app.component
export class AppComponent {
}
【问题讨论】:
-
你想通过点击父级获得
hello的高度吗? -
“我试图使用我在这个问题中找到的 HostListener,但它对我的情况没有帮助......” 怎么会这样?这正是您正在寻找的。span>
-
@ritaj 也许我用错了?
-
嗯,我不知道。这是每次在组件内部或外部单击文档的侦听器。您应该发布您尝试过的内容。
-
我会的。我会再次尝试弄清楚。
标签: javascript html angular