【发布时间】:2020-07-03 17:22:22
【问题描述】:
我已经动态生成了选择字段。
- 有 2 个选择字段。第一个:“类别”,第二个是:“对象”
- 选择字段“对象”取决于“类别”的值。
- 如果选择的类别是“动物”,则对象将仅显示:“狗”、“猫”、“狮子”
- 如果选择的类别是“植物”,则对象将仅显示:“玫瑰”、“椰子”、“苹果”
这是有角度的 HTML
<div [formGroup]="inventoryForm">
<div formArrayName="items">
<div *ngFor="let items of inventoryForm.get('items')['controls']; let i=index">
<div [formGroupName]="i">
<select formControlName="category" class="form-control">
<option selected></option>
<option *ngFor="let a of allCategories">{{a.category}} </option>
</select>
<select formControlName="object" class="form-control">
<option selected></option>
<option *ngFor="let b of allObjects">{{b.name}} </option>
</select>
</div>
</div>
</div>
</div>
<button (click)="addItem()">Add</button>
这是component.ts:
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, FormArray, FormControl, Validators } from '@angular/forms';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit {
allObjects;
allCategories;
inventoryForm: FormGroup;
items: FormArray;
constructor(private formBuilder: FormBuilder) {}
ngOnInit() {
this.allObjects = [
{category: "Animal", name: "Dog"},
{category: "Animal", name: "Cat"},
{category: "Animal", name: "Lion"},
{category: "Plant", name: "Rose"},
{category: "Plant", name: "Coconut"},
{category: "Plant", name: "Apple"},
]
this.allCategories = [
{category: "Animal", },
{category: "Plant", }
]
this.inventoryForm = new FormGroup({
items: new FormArray([])
});
}
createItem(): FormGroup {
return this.formBuilder.group({
category: '',
object: '',
});
}
addItem(): void {
this.items = this.inventoryForm.get('items') as FormArray;
this.items.push(this.createItem());
}
}
这是 stackblitz 链接: https://stackblitz.com/edit/angular-kgzsnu
【问题讨论】:
-
我找到了一个类似问题的旧答案,但我认为如果你适应新版本的 angular 仍然适用。见here
标签: angular