Все, что я хочу на данный момент, это иметь форму с mat-selection-list
.
Это код.
.html
<form [formGroup]="aForm">
<mat-selection-list #id matInput #idInput formControlName="id" style="width: 20%">
<mat-list-option #matOption *ngFor="let option of Options" [value]="option"
(click)="$event.stopPropagation(); changeSelectedOption(matOption.value)" checkboxPosition="before">
{{ option }}
</mat-list-option>
</mat-selection-list>
</form>
.ts
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormControl, FormGroup, FormGroupDirective } from '@angular/forms';
...
export class AComponent implements OnInit {
aForm: FormGroup;
Options: string[] = ['exclude', 'include', 'excludeDateTtime']
constructor(
private formBuilder: FormBuilder,
) {
this.aForm = this.formBuilder.group({
fc: new FormControl({ value: 'exclude', disabled: false }),
});
}
ngOnInit(): void {
}
changeSelectedOption(option: any) {
this.aForm.controls['fc'].patchValue('exclude');
}
}
Проблема 1: инициализация formControl
В строке fc: new FormControl({ value: 'exclude', disabled: false }),
, если я указываю значение, отличное от ''
, выдается ошибка ERROR TypeError: t._value.some is not a function
.
Проблема 2: обновление значения formControl
Из соображений внешнего вида я использую mat-selection-list
с [multiple]="true"
и пытаюсь переопределить множественный выбор с функцией changeSelectedOption
, чтобы в конце можно было выбрать только один вариант.
В строке this.aForm.controls['fc'].patchValue('exclude');
установка значения 'exclude'
вызывает ошибку ERROR TypeError: t.forEach is not a function
.
Что означают эти ошибки? Что я могу сделать, чтобы решить их?
Спасибо.