Привязка флажка, установленного для логического - PullRequest
0 голосов
/ 05 июля 2018

Я использую угловой 5 с TypeScript.

У меня есть объект, содержащий массив из 4 логических значений, и я пытаюсь связать его с 4 флажками. Он создает форму, но когда я записываю значения массива в консоль, они, кажется, не изменяются, когда Я нажимаю на флажок.

HTML

<label  *ngFor = "let v of options[0].options; let i = index">
    <input type="checkbox"  [value]=options[0].values[index]  [checked]=options[0].values[index] (click)="options[0].log()">
    {{v}}
  </label>

component.ts

import {Component, NgModule, OnInit} from '@angular/core';
import {Param1} from '../classes';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';

@Component({
  selector: 'app-test',
  templateUrl: './test.component.html',
  styleUrls: ['./test.component.css']
})


@NgModule({
  imports: [
    FormsModule,
    ReactiveFormsModule
  ]})

export class TestComponent implements OnInit {

  options : Param1[];
  ids = [
          {id: 2, options:["a","b","c","d"], t:'single'},
          {id: 1, options:["a","b","c","d"], t:'multiple'},
          {id: 3, options:null, t:'open'},
  ];


  constructor() {
  }

  ngOnInit() {
    this.options = this.ids.map(function (value) {
      console.log(value);
      return new Param1(value.id, value.options, value.t);
    })
  }

  selectAction(id: string){
    console.log(id);
  }

  log(){console.log(1);}

}

объект param1:

export class Param1{
  id: number;
  options: string[];
  type: string;
  selected : string[];
  answer: string;
  values: boolean[];

  constructor(id: number, options: string[], t: string){
    this.id = id;
    this.options = options;
    this.type = t;

    if(options) {
      console.log("in the init" + options);
      this.values = options.map(function () {
        return false;
      });
    }

  }

  log(){
    console.log(this.values);
  }

  select(option: string){

    if (this.type == "single"){
      this.selected.pop();
    }

    this.selected.push(option);
    this.selected = Array.from(new Set(this.selected));
  }
}

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 05 июля 2018

Вот рабочий пример:

<div *ngFor="let option of options; let i = index">
  <h1>Param {{ i }}</h1>
  <div *ngFor="let booleanOption of option.options; let i = index">
    <label [attr.for]="booleanOption">Option {{ booleanOption }}</label>
    <input type="checkbox" [attr.id]="booleanOption" [(ngModel)]="option.values[i]" (change)="option.log()" />
  </div>
</div>

https://stackblitz.com/edit/angular-5-binding-checkbox-checked-to-boolean?file=src%2Fapp%2Fapp.component.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...