gpt4 book ai didi

angular - 将参数传递给 typescript 中的 Angular Directive(指令)

转载 作者:搜寻专家 更新时间:2023-10-30 21:29:01 24 4
gpt4 key购买 nike

我有以下指令。我正在尝试传递单击链接/按钮时需要切换的类名。我在调试控制台中一直未定义。 HostListener 采用参数数组 - 我想我不确定如何传递它们并且似乎无法找到它的示例。

   @Directive({
selector: '[appSidebarToggler]'
})
export class SidebarToggleDirective {

constructor(public elementRef: ElementRef) {
}

@HostListener('click', ['$event', '$tobeToggledClassName'])

toggleOpen($event: any, $tobeToggledClassName: any) {
$event.preventDefault();
console.log("class to be toggled is - >" + $tobeToggledClassName);
console.log("ref - >" + this.elementRef);
document.querySelector(tobeToggledClassName).classList.toggle('sidebar-hidden');

}
}

我在我的组件中这样使用它:

<a class="" href="#" sidebarToggler tobeToggledClassName="sideMenu">&#9776;</a>

谢谢。

最佳答案

您可以在指令的 Input 绑定(bind)中传递类名。您可以在任何实例中轻松检索绑定(bind)的值。

@Directive({
selector: '[appSidebarToggler]'
})
export class SidebarToggleDirective {
@Input() tobeToggledClassName: string;
constructor(public elementRef: ElementRef) {
}

@HostListener('click', ['$event'])

toggleOpen($event: any) {
$event.preventDefault();
console.log("class to be toggled is - >" + this.tobeToggledClassName);
console.log("ref - >" + this.elementRef);
document.querySelector(this.tobeToggledClassName).classList.toggle('sidebar-hidden');

}
}

HTML

<a class="" href="#" sidebarToggler tobeToggledClassName="sideMenu">&#9776;</a>
OR
<a class="" href="#" sidebarToggler [tobeToggledClassName]="'sideMenu'">&#9776;</a>

关于angular - 将参数传递给 typescript 中的 Angular Directive(指令),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46531824/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com