как указать значение нашего флажка - PullRequest
0 голосов
/ 05 апреля 2019

Я хочу, чтобы, когда пользователь установил флажок, значением было «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>

Но это не работает! когда я проверяю, это дает мне «true» вместо «l.code». Спасибо!

Ответы [ 2 ]

2 голосов
/ 05 апреля 2019

Вы можете использовать обработчик события «change» с привязкой события к флажку.

В 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);
}
0 голосов
/ 09 апреля 2019

Вы можете сделать что-то вроде ниже:

HTML:

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

ц

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

...