Изображение:
Код:
Контроллер TS:
this.formTest = this.formBuilder.group({
first: ['', Validators.required],
firsttwo: [''],
second: this.formBuilder.array([this.formBuilder.group(
{
one: ['', Validators.required],
two: [false],
three: [false],
four: []
})
])
});
HTML:
<form [formGroup]="formTest" (ngSubmit)="onLogSubmit()">
<div class="row">
<div class="form-group col-6 col-md-2">
<label for="first">First*</label>
<div [ngClass]="{'has-error': (formTest.controls.first.errors && formTest.controls.first.dirty), 'has-success': !formTest.controls.first.errors}">
<input type="number" name="first" min="1" class="form-control" autocomplete="off" placeholder="Nro" formControlName="first" required />
<!-- Validation -->
<ul class="help-block">
<li *ngIf="formTest.controls.first.errors?.required && formTest.controls.first.dirty">Pakollinen kenttä</li>
</ul>
</div>
</div>
<div class="form-group col-6 col-md-2">
<label for="firsttwo">FirstTwo*</label>
<input type="number" name="firsttwo" min="1" class="form-control" autocomplete="off" placeholder="Nro" formControlName="firsttwo"/>
</div>
</div>
<br>
<div class="row" formArrayName="second">
<div class="col-12" *ngFor="let s of formTest.controls.second.controls; let i=index" [formGroup]="s">
<div class="form-group col-6 col-md-2">
<label>One</label>
<input type="number" step="0.1" min="0" class="form-control" formControlName="one">
</div>
<div class="form-group col-6 col-md-2">
<label class="form-check checkbox-container">
<input type="checkbox" class="form-check-input" formControlName="two">
<span class="checkmark"></span>
<label class="form-check-label" for="type">Two</label>
</label>
</div>
<div class="form-group col-6 col-md-2">
<label class="form-check checkbox-container">
<input type="checkbox" class="form-check-input" formControlName="three">
<span class="checkmark"></span>
<label class="form-check-label" for="deco">Three</label>
</label>
</div>
<div class="form-group col-6 col-md-2">
<label>Four</label>
<input type="number" step="1" min="0" class="form-control" formControlName="four">
</div>
</div>
</div>
<br>
</form>
Моя проблема в следующем:
- Почему один Validation.required внутри FormGroup FormControl от FormArray закрашивает всю внутреннюю FormGroup красной полосой сбоку?
- Почему каждый элемент управления внутренней группы формы находится в отдельной строке? Загрузочная программа обычно правильно поддерживает правильное распределение столбцов, как в полях группы внешней формы?
РЕДАКТИРОВАТЬ:
Решено, спасибо Элисео. Пришлось специально удалить границу как с formArrayName-div, так и с [FormGroup] -div, используя простой css-класс.
Решено. По какой-то причине [FormGroup] -div нуждается в собственном классе-строке вместо класса столбца, чтобы дочерние div-элементы распознавали столбцы начальной загрузки.
Исправленная версия:
<div class="no-validation-color" formArrayName="second">
<div class="row no-validation-color" *ngFor="let s of formTest.controls.second.controls; let i=index" [formGroup]="s">
.no-validation-color {
border: 0px;
}