如何验证打字稿中的多个 select 框
How to validate multiple select boxes in typescript
场景如下。我有大量数据,其中包含有关产品的信息。该产品有多种可用选项,而无需选择所有选项,不应允许用户将产品添加到购物车或购买。这是我试过的代码。
this.form = new FormGroup({
'options': new FormControl(null, [Validators.required]),
});
这很好用,但在仅选择 1 个选项后,允许用户点击“添加到购物车”按钮,我想限制该功能。我想我需要实施 formArray。但是我被困在这里了。我将不胜感激任何帮助。
点击此处stackblitz了解更多详情
将您的表单初始化为
initForm() {
this.form = new FormGroup({
options: new FormArray([]),
});
}
获取或设置选项的帮助方法
set setOptionsFA(controls: FormControl[]) {
controls.forEach((control) => this.optionsFA.push(control));
}
get optionsFA(): FormArray {
return this.form.get('options') as FormArray;
}
get optionsControls(): FormControl[] {
return this.optionsFA.controls as FormControl[];
}
从您的选项列表
中创建FormControl[]
的方法
createOptionControls(options: any[]): FormControl[] {
return options.map(
(_) => new FormControl(null, Validators.required)
) as FormControl[];
}
使用 RxJs tap 运算符调用 createOptionsControls
方法并将选项传递给它并设置 FormArray 选项
this.appService
.productDetail(247)
.pipe(
tap(
({ options }) =>
(this.setOptionsFA = this.createOptionControls(options))
)
)
.subscribe((res) => {
this.data = res;
});
场景如下。我有大量数据,其中包含有关产品的信息。该产品有多种可用选项,而无需选择所有选项,不应允许用户将产品添加到购物车或购买。这是我试过的代码。
this.form = new FormGroup({
'options': new FormControl(null, [Validators.required]),
});
这很好用,但在仅选择 1 个选项后,允许用户点击“添加到购物车”按钮,我想限制该功能。我想我需要实施 formArray。但是我被困在这里了。我将不胜感激任何帮助。
点击此处stackblitz了解更多详情
将您的表单初始化为
initForm() {
this.form = new FormGroup({
options: new FormArray([]),
});
}
获取或设置选项的帮助方法
set setOptionsFA(controls: FormControl[]) {
controls.forEach((control) => this.optionsFA.push(control));
}
get optionsFA(): FormArray {
return this.form.get('options') as FormArray;
}
get optionsControls(): FormControl[] {
return this.optionsFA.controls as FormControl[];
}
从您的选项列表
中创建FormControl[]
的方法
createOptionControls(options: any[]): FormControl[] {
return options.map(
(_) => new FormControl(null, Validators.required)
) as FormControl[];
}
使用 RxJs tap 运算符调用 createOptionsControls
方法并将选项传递给它并设置 FormArray 选项
this.appService
.productDetail(247)
.pipe(
tap(
({ options }) =>
(this.setOptionsFA = this.createOptionControls(options))
)
)
.subscribe((res) => {
this.data = res;
});