Я использую угловой 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));
}
}
Что мне здесь не хватает?