mat-slide-toggle Angular Material以编程方式切换

时间:2019-10-13 16:30:52

标签: angular typescript angular-material angular8

我正在尝试通过代码toggle toggle()

模板

<mat-slide-toggle color="primary" (change)="updateFunc($event)"></mat-slide-toggle>

ts

updateFunc(e) {
  // do some checks to see if can be activated
  // if can't be activated, don't slide to on
  e.checked = false; // <--- does not work
  e.toggle(); // <-- does not work
}

有什么想法吗?

-编辑-

为澄清起见,在更改事件之后,按钮被切换为打开状态。我的功能正在运行以进行一些测试。如果测试未通过,我想将滑块切换回关闭位置。那么,如何在代码中切换按钮(打开或关闭)?这只是在我的代码中使用toggle()方法或在我的代码中取消选中该开关的问题。

2 个答案:

答案 0 :(得分:1)

您只能使用模板引用变量。

模板

<mat-slide-toggle color="primary" #slide (change)="updateFunc(slide)">
</mat-slide-toggle>

ts

updateFunc(e) {
 let var=false;
 if(!var)
 {
   e.checked = true; //either true or false 
 }

答案 1 :(得分:0)

https://stackblitz.com/edit/angular-material-edh46h

<mat-slide-toggle #toggleElement class="example-margin" [checked]="checked" (change)="updateFunc($event)">
    Slide me!
</mat-slide-toggle>
  @ViewChild("toggleElement") ref: ElementRef;

  checked: boolean;

  ngOnInit() {
    this.checked = true;
  }

  updateFunc(e) {
    const someCondition = true;
    if (someCondition) {
      this.ref.checked = false;
    }
  }