Angular 按getElementById以编程方式单击mat复选框
我想在ngAfterContentInit()中触发一个单击事件 运行下面的代码,我得到了错误: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
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')