Angular Как получить значение в массиве форм?
Я хочу получить значения 'onduty' из всех экземпляров массива форм. Я попробовал это в HTML:
<span *ngFor="let day of workDayandTime.controls;let i= index;">
{{day.onduty}}
</span>
но я не мог получить какую-либо ценность.
это значение workDayandTime в формате json: workDayandTime
Форма:
class employerShortForm extends FormGroup {
constructor(fb: FormBuilder) {
super({
employer: fb.group({
name: new FormControl('',Validators.required),
}),
employee: fb.group({
name: new FormControl('', Validators.required)
}),
contractStart: new FormControl(''),
contractEnd: new FormControl(''),
workAddress: new FormControl('', Validators.required),
work: new FormControl('', Validators.required),
workDayandTime: fb.array([]),
wageType: new FormControl(''),
wage: new FormControl(''),
bonus: new FormControl(''),
otherWage: fb.array([]),
otherwageRadio: new FormControl(''),
overTimeAddRate: new FormControl(''),
payDateType: new FormControl(''),
payDate: new FormControl(''),
payMethod: new FormControl(''),
insurance1: new FormControl(''),
insurance2: new FormControl(''),
insurance3: new FormControl(''),
insurance4: new FormControl(''),
company: fb.group({
name: new FormControl('', Validators.required),
phone: new FormControl('', Validators.required),
address: new FormControl('', Validators.required),
}),
ownerName: new FormControl('', Validators.required),
employeeEmail: new FormControl('', Validators.required),
});
}
}
короткое время-paper.ts
import { employerShortForm, employeeContForm, DataHandling, otherWage, workDayandTime} from '../../../contract-form'
import { FormGroup, FormControl, FormBuilder, FormArray } from '@angular/forms';
import { Component, AfterViewInit, ElementRef, Renderer2, ViewChild } from '@angular/core';
import { IonicPage, ViewController, ModalController, NavParams, Alert, NavController, Checkbox, Platform } from 'ionic-angular';
@Component({
selector: 'app-short-time-paper',
templateUrl: 'short-time-paper.html',
})
export class ShortTimePaperComponent implements AfterViewInit{
public employerForm: employerShortForm = new employerShortForm(this.fb);
ngAfterViewInit() {
this.addworkDayandTime();
}
get workDayandTime(): FormArray{
return this.employerForm.get('workDayandTime') as FormArray;
}
public addworkDayandTime() {
for (let i = 0; i < 7; i++) {
this.workDayandTime.push(this.fb.group(new workDayandTime()));
}
}
}
короткое время paper.html
<form [formGroup]="employerForm">
<span *ngFor="let day of workDayandTime.controls;let i= index;">
{{day.onduty}}
<span *ngIf="day.onduty=='false'">{{getDays(i)}}, </span>
</span>
</form>
Я отбросил другой код, но о formarray. Что я хочу знать, так это как получить значение "onduty" для каждого экземпляра в массиве. Извините за мой короткий англ. Но если вы поможете решить эту проблему. Это будет большим удовольствием для меня. Благодарю.
2 ответа
Я решил это,
в HTML:
<span *ngFor="let day of workDayandTime.controls;let i= index;">
{{ day.controls.onduty.value }}
</span>
это структура массива форм: Структура
Это довольно сложно: <
Просто используйте workDayandTime вместо workDayandTime.controls. Это будет работать:
<form [formGroup]="employerForm">
<span *ngFor="let day of workDayandTime;let i= index;">
{{day.onduty}}
<span *ngIf="day.onduty=='false'">{{getDays(i)}}, </span>
</span>
</form>
Приведенный выше код работал у меня. следуйте другому примеру.
<div *ngFor="let rules of condition['controls'].filters['controls']; let conditionIndex = index" class="row">{{rules.controls.formId.value }}</div>