Angular mat-checkbox getElementById

Leo*_*zen 2 angular-material angular-material2 angular

我有角度材料的mat-checkbox问题.我给了复选框这样的ID:

<mat-checkbox class="toolbar-checkbox" id="myCheckbox">
    MyCheckbox
</mat-checkbox>
Run Code Online (Sandbox Code Playgroud)

在那之后,我正在尝试使用这样的元素:

(<MatCheckbox>document.getElementById('myCheckbox')).checked = true;
Run Code Online (Sandbox Code Playgroud)

但不幸的是我收到了这个错误:

TS2352: Type 'HTMLElement' cannot be converted to type 'MatCheckbox'. 
Property '_changeDetectorRef' is missing in type 'HTMLElement'. 
(<MatCheckbox>document.getElementById('asdasd')).checked = true;
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题,或者是否有更好的方法来使用复选框而不使用[(ngModel)]?

Fai*_*sal 6

使用ViewChild装饰器.将模板更改为:

<mat-checkbox class="toolbar-checkbox" #myCheckbox>
    MyCheckbox
</mat-checkbox>
Run Code Online (Sandbox Code Playgroud)

..并在你的打字稿中:

import { ViewChild } from '@angular/core';
import { MatCheckbox } from '@angular/material';

@Component({
    ..... 
})
export class YourComponent {
    @ViewChild('myCheckbox') private myCheckbox: MatCheckbox;

    // You can then access properties of myCheckbox 
    // e.g. this.myCheckbox.checked
}
Run Code Online (Sandbox Code Playgroud)

看到这个工作StackBlitz演示.

  • 如果我的复选框有动态 ID 怎么办? (4认同)