Инициируйте событие щелчка для ссылки на элемент из списка запросов, используя angular 8 - PullRequest
0 голосов
/ 20 июня 2020
• 1000 для test2.Как это сделать?

Демо: https://stackblitz.com/edit/angular-ivy-2spfo3?file=src / app / app.component.ts

ERROR
Error: Cannot read property 'forEach' of undefined

app.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 Ответ

1 голос
/ 20 июня 2020

Ваша переменная 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')
    });
}

Теперь он должен работать, если вы смотри работает в консоли!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...