[英]FormControlName not showing the previous values in angular 7 material modal
[英]How to assign values for multiple tds of same formcontrolname on angular
我有許多由 ngFor 在表中創建的輸入類型。還有通過迭代創建的其他變量
TS
cars=[{id:1232,name:Toyota,bhp:500},
{id:4321,name:Mclaren,bhp:720},
{id:2321,name:Mercedes,bhp:470},
{id:4321,name:Subaru,bhp:342},
{id:5432,name:Mazda,bhp:4321}]
CarForm= new FormGroup({
carNumber: new FormControl(),
});
HTML
<tr *ngFor = "let car of cars" >
<td>
<input type="text" formControlName="carNumber"">
</td>
</tr>
我知道我可以將名稱值傳遞給這樣的輸入: CarForm.controls.carNumber.setValue(id)
。
但以這種方式,我無法逐行通過。 也像下面一樣改變了我的 HTML 但沒有用
[value]="cars(index).id"
我怎樣才能做到這一點?
@Argee 提到的一個好方法是使用FormArray
。 下面的方法使用FormBuilder
來構建FormGroup
在您的 TS 文件中
cars=[
{id:1232,name:'Toyota',bhp:500},
{id:4321,name:'Mclaren',bhp:720},
{id:2321,name:'Mercedes',bhp:470},
{id:4321,name:'Subaru',bhp:342},
{id:5432,name:'Mazda',bhp:4321}]
CarForm = this.fb.group({
cars: this.fb.array(
this.cars.map(({id, name, bhp}) =>
this.fb.group({
id: [id],
name: [name],
bhp: [bhp]
})
)
)
})
get carsArray(): FormArray {
return this.CarForm.get('cars') as FormArray;
}
constructor(private fb: FormBuilder) {
}
在你的 HTML
Form Value: <br>
<pre>{{CarForm.value | json }}</pre>
<form [formGroup]='CarForm'>
<div formArrayName='cars'>
<div *ngFor="let car of carsArray.controls; let i = index" [formGroupName]='i'><br>
<label [attr.for]="'car-name' + i">Car {{ i + 1 }} Name </label>
<input formControlName='name'><br>
<label [attr.for]="'car-bhp' + i">Car {{ i + 1 }} Bhp </label>
<input formControlName='bhp'>
</div>
</div>
</form>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.