Angular QueryList返回的类型与从事件侦听器单击不同
比较Angular QueryList返回的类型与从事件侦听器单击不同,angular,Angular,比较QueryList列表的内容时出现问题。我喜欢区分一些元素来构建菜单的结束逻辑 我在工具栏中有一些按钮,这些按钮是mat button类型的角材质按钮。这些按钮由#navButton指定,以将它们放入QueryList中。问题是,事件侦听器中单击的按钮(导航按钮)的类型与QueryList中的类型不同。如果我使用普通按钮而不是材质垫按钮,我的代码将按预期运行 QueryList中有不同于事件侦听器的类型的原因是什么?我能做什么 我在GitHub上发布了我的代码: 请你看一下好吗?重要的代码行
QueryList
列表的内容时出现问题。我喜欢区分一些元素来构建菜单的结束逻辑
我在工具栏中有一些按钮,这些按钮是mat button类型的角材质按钮。这些按钮由#navButton指定,以将它们放入QueryList中。问题是,事件侦听器中单击的按钮(导航按钮)的类型与QueryList中的类型不同。如果我使用普通按钮而不是材质垫按钮,我的代码将按预期运行
QueryList中有不同于事件侦听器的类型的原因是什么?我能做什么
我在GitHub上发布了我的代码:
请你看一下好吗?重要的代码行位于main-header.component.ts和main-header.component.html中
问候
Christoph如果要获取元素的elementref,请在
read
config字段中提供它
@ViewChildren('navButton', {read: ElementRef})
listOfNavButtons!: QueryList<ElementRef>;
@ViewChildren('navButton',{read:ElementRef})
按钮列表!:查询列表;
在本例中,您将获得匹配的所有元素的元素引用的QueryList
将比较更改为:
if(e.target==x.nativeElement.firstChild | | e.target==x.nativeElement)
如果条件是这样(firstChild):e.target==x.nativeElement.firstChild非常感谢您的建议!我更改了代码,但结果是一样的。我需要更改更多代码吗?对不起,我是这方面的新手。我猜你想要所有按钮都有mat按钮指令。所以,首先应用安德烈所说的。然后,代码的第41行应该是这样的:if(e.target==x.nativeElement.firstChild){是的,就是这样,两者的组合就是解决方案!:-)好的,第41行应该是这样的:if(e.target==x.nativeElement.firstChild | e.target==x.nativeElement){