我现在只想有一个带有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
值
对于look&感觉为什么我使用mat-selection-list
w/[multiple]="true"
,并试图覆盖带有函数changeSelectedOption
的多项选择,这样,最终只能选择一个选项。
在行中,设置'exclude'
值的this.aForm.controls['fc'].patchValue('exclude');
抛出错误ERROR TypeError: t.forEach is not a function
。
这些错误是什么意思?我能做些什么来解决它们?
谢谢。
正如StackOverflow上其他一些相关问题所说,为了使formControl.patchValue()
工作,传递的参数需要具有预期的数据类型。
我上面提到的有问题的行,例如fc: new FormControl({ value: 'exclude', disabled: false }),
显示了具有数据类型string
(即'exclude'
(的自变量。
但是,对于mat-selection-list
,无论指定[multiple]="true"
还是[multiple]="false"
,预期的数据类型都是Array
。我想所有其他"角度材质"列表也是如此。
因此正确的方法是
fc: new FormControl({ value: ['exclude'], disabled: false }),
和
this.aForm.controls['fc'].patchValue(['exclude']);
如果有机会,在fc: new FormControl({ value: '', disabled: false }),
中使用''
这并不意味着数据类型是CCD_ 25。换句话说,''
不是空字符串,因此意味着string
数据类型。它似乎更多地作为CCD_;对象";或者表示CCD_ 29类型的对象。