【发布时间】:2019-07-23 11:42:13
【问题描述】:
我是 Angular 6 的新手。我需要标记复选框。
我有两个数组:
this.skillArray = [
{ID: 1, name: "الغطس"},
{ID: 2, name: "الحريق"},
{ID: 3, name: "المعالجة"},
{ID: 4, name: "الميكانيكا"},
{ID: 5, name: "السيول"},
{ID: 6, name: "التغريز"},
{ID: 7, name: "الكهرباء"},
{ID: 8, name: "الاحتفالات"},
{ID: 9, name: "المناسبات"},
{ID: 10, name: "الصلاة"}
]
var splitstr = ["9", "7"];
然后我们要检查 9 & 7 id 是否在复选框中被选中。我尝试解决它,然后成功标记这些复选框,但我还在复选框中执行了一个 onchenge 函数来发布值。所以问题是那些复选框被选中的值没有被推送到数组。那么如何解决它。
<form [formGroup]="myForm">
<div *ngFor="let data of skillsArray">
<p><input type="checkbox" [checked]="inputChecked(data.ID)" (change)="onChange(data.ID, $event.target.checked)"> {{data.name}}</p>
</div>
</form>
inputChecked(id:any) {
let checked = false;
console.log(this.splitstr);
for (let l = 0; l <this.splitstr.length; l++) {
let temp = this.splitstr[l];
if (temp == id) {
checked = true;
}
}
return checked;
}
onChange(value: any, isChecked: boolean) {
const skillFormArray = <FormArray>this.myForm.controls.VFields;
if (isChecked) {
skillFormArray.push(new FormControl(value));
}
else
{
let index = skillFormArray.controls.findIndex(x => x.value == value)
skillFormArray.removeAt(index);
}
}
【问题讨论】:
-
你想做什么?
-
那些复选框已经被检查过,已经推送到 SkillFormArray 中。
-
@AakankshiGupta,这里没有人懂印地语,请用英语发表评论..
标签: angular typescript angular6