为了账号安全,请及时绑定邮箱和手机立即绑定

使用角度 8 从查询列表中触发元素引用的点击事件

使用角度 8 从查询列表中触发元素引用的点击事件

尚方宝剑之说 2022-10-13 10:57:42
我正在尝试从 ngOninit 的查询列表中触发元素引用的单击事件。但是我收到了 forEach 未定义的错误消息。我不知道为什么我会收到这样的错误消息。我想触发 test2 的单击事件。怎么做?演示:https ://stackblitz.com/edit/angular-ivy-2spfo3?file=src/app/app.component.tsERRORError: Cannot read property 'forEach' of undefinedapp.component.html:<div *ngFor="let data of list; let i=index"><div #el (click)="getVal(data.id)">{{data.name}} </div> </div>app.component.ts:@ViewChildren('el') elList: QueryList<ElementRef>newindex=1;list=[  {    name:"test1",    id:1  },  {    name:"test2",    id:2  },  {    name:"test3",    id:3  } ]getVal(id){  alert("Trigger click for: test"+id);}ngOnInit(){    this.elList.forEach((item, index) => {       if (index === (this.newindex - 1)) (item.nativeElement as HTMLElement).click();    });}
查看完整描述

1 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

您的变量 elList 没有在您的代码中初始化或定义,我在上面的代码中没有看到 elList,它是否不完整?


好的,看看你的 stackblitz 我发现了问题,当视图没有完成加载时,你试图访问一个视图对象,你应该在你的组件中实现 AfterViewInit,然后在这个方法中添加 foreach,如下所示:


export class AppComponent implements OnInit, AfterViewInit { 

ngAfterViewInit() {

  this.elList.forEach((item, index) => { 

      if (index === (this.newindex - 1)) (item.nativeElement as HTMLElement).click();

      console.log('works')

    });

}

如果您在控制台中看到作品,它现在应该可以工作了!


查看完整回答
反对 回复 2022-10-13
  • 1 回答
  • 0 关注
  • 62 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信