Angular FormControl、patchValue和垫子选择列表



我现在只想有一个带有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-listw/[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类型的对象。

最新更新