如何指定复选框的值

问题描述 投票:0回答:2

我希望当用户选中复选框时,值为“l.code”而不是布尔值

这是我的代码

<div class="form-group">
    <label>Critères : </label>&nbsp;
    <div class="checkbox-inline" *ngFor="let l of lesCriteres; let i= index">
      <label>
        <input type="checkbox" [value]="l.code" [(ngModel)]="actif.lesCriteresActifs[i].critere.code">{{l.code}}
      </label>
    </div>
</div>

但它不起作用!当我检查时,它给了我“真实”而不是“l.code”。谢谢 !

html angular checkbox return-value angular-ngmodel
2个回答
0
投票

您可以执行以下操作:

HTML:

<div *ngFor="let data of emails">
    <input type="checkbox" [value]="data.email" (change)="onChange(data.email, $event.target.checked)"> {{data.email}}<br>
</div>

TS:

import { Component } from '@angular/core';
import { FormGroup, FormBuilder, FormArray, FormControl } from '@angular/forms';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  name = 'Angular 6';
emailFormArray = [];
  emails = [{ email: "email1" }, { email: "email2" }, { email: "email3" }, { email: 'email4' }]
  myForm: FormGroup;

  constructor(private fb: FormBuilder) { }

  ngOnInit() {
    this.myForm = this.fb.group({
      useremail: this.fb.array([])
    });
  }

  onChange(email: string, isChecked: boolean) {
    if (isChecked) {
      this.emailFormArray.push(email);
    } else {
      let index = this.emailFormArray.findIndex(x =>{ 
        console.log(x);
        return x == email
        });
      console.log(index)
      this.emailFormArray.splice(index,1);
    }
    console.log(this.emailFormArray)
  }

}

STACKBLITZ


2
投票

您可以在复选框上使用带有事件绑定的“更改”事件处理程序。

在HTML中

<form>
    <div *ngFor="let l of lesCriteres">
        <input type="checkbox" value="l.code" (change)="onChangeEvent($event, l.code)"> {{l.code}}<br>
    </div>
</form>

在ts

onChangeEvent(eventValue, valueOfCheckbox){
  alert(valueOfCheckbox);
}
© www.soinside.com 2019 - 2024. All rights reserved.