Angular 按getElementById以编程方式单击mat复选框

Angular 按getElementById以编程方式单击mat复选框,angular,angular-material,Angular,Angular Material,我想在ngAfterContentInit()中触发一个单击事件 运行下面的代码,我得到了错误: ERROR TypeError: Cannot read property 'click' of null 由于我使用NgFor打印所有mat复选框 恐怕我不能用ViewChild这个方法来达到我的目的 组成部分: <div *ngFor="let item of NationlityList.NationlityList; let i = index"> <div *ngI

我想在ngAfterContentInit()中触发一个单击事件

运行下面的代码,我得到了错误:

ERROR TypeError: Cannot read property 'click' of null
由于我使用NgFor打印所有mat复选框

恐怕我不能用ViewChild这个方法来达到我的目的

组成部分:

<div *ngFor="let item of NationlityList.NationlityList; let i = index">
  <div *ngIf="i % 6 == 0" class="row">
      <mat-checkbox id="{{'Id'+i}}" *ngIf="i + 0 < NationlityList.NationlityList.length" (change)="onCheckboxChecked($event, NationlityList.NationlityList[i].Nationality)"> {{ NationlityList.NationlityList[i].Nationality }} </mat-checkbox>
      <mat-checkbox id="{{'Id'+(i+1)}}" *ngIf="i + 1 < NationlityList.NationlityList.length" (change)="onCheckboxChecked($event, NationlityList.NationlityList[i+1].Nationality)"> {{ NationlityList.NationlityList[i+1].Nationality }} </mat-checkbox>
  </div>
</div>
您可以这样做:

document.getElementById('checkboxID').setAttribute('checked','true')

请在StackBlitz中重现一个问题至少有两种方法可以做到这一点,即“角度”的方法,请记住。编辑:我猜ViewChild不起作用,因为元素在
nAfterViewInit
@StealthInja ViewChild上已准备就绪。Inja ViewChild对我不起作用,因为我需要通过动态ID触发事件。感谢您的评论~在不同的生命周期挂钩中尝试并检查它
document.getElementById('checkboxID').setAttribute('checked','true')