如何通过确认进行mat-slide-toggle

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过确认进行mat-slide-toggle相关的知识,希望对你有一定的参考价值。

我在下面的代码中遇到的问题是,当我点击确认时,开关会发生变化。我希望只有在单击“确定”时才能更改开关。

你能建议我吗?如何确认mat-slide-toggle?

html代码:

<form [formGroup]="myform" class="col s12">
<div *ngFor="let item of homeboxsp;let i = index">
            <section class="example-section">
            <mat-slide-toggle value="active" formControlName="active-{{i}}" class="example-margin" [checked]="item.active === '1'"(click)="onActiveHomeboxP()"> {{item.active}}
            </mat-slide-toggle>
        </section>
</div>
</form>

ts代码:

export class AppComponent {
  public homeboxsp: HomeboxP[] = [];
  myform: FormGroup;
  checkedBtn: boolean;
  constructor(public service: Service) {
  }
  ngOnInit() {
    this.populateFormHomeboxP();
  }
  populateFormHomeboxP() {
    this.homeboxsp = this.service.getData();


    let controls = {
      'homeboxpackage_id': new FormControl('', Validators.required)
    };

    for (let i = 0; i < this.homeboxsp.length; i++) {
      controls['active-' + i] = new FormControl(this.homeboxsp[i].active == '1', Validators.required)
    }
    this.myform = new FormGroup(controls);
    this.patchForm();
  }
  patchForm() {
    this.myform.patchValue({
      homeboxpackage_id: this.homeboxsp.map(x => x.homeboxpackage_id),
    });
    console.log(this.homeboxsp.map(x => x.active))
    console.log(this.homeboxsp.map(x => x.homeboxpackage_id))
  }
  onActiveHomeboxP() {
    if (confirm('Are you sure?')) {
      let edigps = this.myform.value
      console.log(edigps)
      console.log('true')
    } else {
      this.checkedBtn = !this.checkedBtn;
    }
  }
}
答案

此代码是多个交换机的示例代码,您可以添加额外的逻辑:

HTML

<section class="example-section">
  <div *ngFor="let item of homeboxsp;let i = index">
    <mat-slide-toggle class="example-margin" [(ngModel)]="checkedBtn[i]" (click)="onActiveHomeboxP(i)">
    </mat-slide-toggle>
  </div>
</section>

TS

  checkedBtn: any[]=[];
  homeboxsp = ['a','b','c'];

  constructor() {    
  }

  ngOnInit() { }

  onActiveHomeboxP(i:any) {
    if (confirm('Are you sure?')) {

      console.log('true')
    } else {
      this.checkedBtn[i] = !this.checkedBtn[i];
    }


  }

以上是关于如何通过确认进行mat-slide-toggle的主要内容,如果未能解决你的问题,请参考以下文章

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

无法绑定到“ngModel”,因为它不是“mat-slide-toggle”的已知属性

mat-slide-toggle 单元测试用例显示错误

如何处理角度 6 中的多个 mat-slide-toggle 标签?

jqGrid - 密码确认

R语言如何确认限制性样条分析的最佳节点个数进行方差分析通过p值确认指定连续变量和风险值HR之间是否存在非线性关系限制性立方样条cox回归模型