Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular QueryList返回的类型与从事件侦听器单击不同_Angular - Fatal编程技术网

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){