gpt4 book ai didi

angular - 如何将点击处理程序附加到投影的内容元素

转载 作者:太空狗 更新时间:2023-10-29 18:14:52 28 4
gpt4 key购买 nike

我正在使用内容投影将按钮放入组件中。

<hello name="{{ name }}">
<button #btn>Click Me</button>
</hello>

和组件:

@Component({
selector: 'hello',
template: `
<h3>Hello {{name}}!</h3>
<ng-content></ng-content>
`
})

到目前为止一切顺利...但我现在想向该按钮添加一个(单击)事件监听器,并且我希望处理程序存在于接收投影内容的组件中。

我希望执行以下操作来访问 native 元素,然后添加点击监听器。

@ViewChild('btn') btn

不幸的是,当我在 ngAfterViewInit 中控制日志 this.btn 时,我得到一个“未定义”。即使它确实有效,我认为必须有一种比访问 native 元素更 Angular 方式来附加监听器。

完成此任务的最佳方法是什么?

stackblitz 示例:https://stackblitz.com/edit/angular-cj4bz1?file=src%2Fapp%2Fhello.component.ts

最佳答案

您可以使用 @ContentChild@ContentChildren 来访问组件内的投影子项:

您可以在此处阅读更多相关信息以及与 @ViewChild@ViewChildren 的异同 Content Child Docs

在您访问您的 child / child 之后,您可以使用类似 rxjs 和 From Event 的东西运算符获取点击事件。

fromEvent(this.mycontentchildelement, 'click').subscribe((event) => console.log('got clicked', event));

关于angular - 如何将点击处理程序附加到投影的内容元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52066009/

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