Angular 4嵌套下拉列表 [英] Angular 4 nested dropdown
问题描述
我试图添加一个嵌套的下拉菜单.如果单击添加城市",它将创建另一个下拉列表.没有下拉菜单,我成功了.请查看波纹管
I trying to add a nested drop-down. If we click "Add City", it will create another drop-down. I was successful without drop-down. Please see bellow
.. component.html
..component.html
<form [formGroup]="form" (ngSubmit)="onSubmit()">
<select formControlName="cities">
<option *ngFor="let city of myCities; let i=index" [value]='itemname' >
{{ city }}
</option>
</select>
<br>
<button>Submit</button>
<button (click)="addCity()">Add City</button>
<button (click)="remove(i)">Remove</button>
</form>
component.ts
component.ts
form = new FormGroup({
cities: new FormControl([null]),
});
myCities = ['Dhaka','Dubai','Munich'];
get cities(): FormArray { return this.form.get('cities') as FormArray; }
addCity() { this.form.get('cities').push(new FormControl())}
remove(index){ this.form.get('cities').removeAt(index) }
显示错误如下:
E:/angular/nestedForm2/src/app/order-form/order-form.component.ts(21,39):类型"AbstractControl"上不存在属性"push".
E:/angular/nestedForm2/src/app/order-form/order-form.component.ts (21,39): Property 'push' does not exist on type 'AbstractControl'.
E:/angular/nestedForm2/src/app/order-form/order-form.component.ts(23,42):类型"AbstractControl"上不存在属性"removeAt".
E:/angular/nestedForm2/src/app/order-form/order-form.component.ts (23,42): Property 'removeAt' does not exist on type 'AbstractControl'.
我已经尝试了不同的方法,但是仍然没有找到任何解决方案.你能帮忙吗?
I have tried in different ways but still did not find any solution. Could you please help?
推荐答案
我找到了解决方案.
component.html:
component.html:
<form [formGroup]="form" (ngSubmit)="onSubmit()">
<div formArrayName="cities">
<div *ngFor="let city of cities.controls; let i=index">
<select [formControlName]="i">
<option *ngFor="let itemname of myCities" [value]='itemname' >
{{ itemname }}
</option>
</select>
</div>
</div>
<br>
<button>Submit</button>
</form>
<br>
<button (click)="addCity()">Add City</button>
<button (click)="remove(i)">Remove City</button>
component.ts:
component.ts:
import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms';
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-order-form',
templateUrl: './order-form.component.html',
styleUrls: ['./order-form.component.css']
})
export class OrderFormComponent implements OnInit {
form = new FormGroup({
cities: new FormArray([
new FormControl([null]),
]),
});
myCities = ['Dhaka','Dubai','Munich'];
get cities(): FormArray { return this.form.get('cities') as FormArray; }
addCity() { this.cities.push(new FormControl()); }
remove(index) { (this.form.get('cities') as FormArray).removeAt(index) }
constructor() { }
ngOnInit() {
}
onSubmit() {
console.log(this.cities.value); // ['SF', 'NY']
console.log(this.form.value); // { cities: ['SF', 'NY'] }
}
setPreset() { this.cities.patchValue(['LA', 'MTV']); }
}
这篇关于Angular 4嵌套下拉列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!