【发布时间】:2021-01-22 05:42:25
【问题描述】:
编辑 1:
我修改了我的问题以澄清我的需求。
我有一个包含FormControl 的FormGroup。
在这些FormControl中,有一个接收数组值。
我正在寻找的是是否有一种解决方案可以让FormControl 接收数组值,而不是接收逗号分隔的字符串值中的值(不带括号 [] )。
我得到了什么:(数组值)
我想要什么:(字符串值用逗号分隔,没有brackets[])
分叉链接:Here
- 提前感谢您的帮助
原问题:
我想将从FormArray 接收到的数据转换为带逗号的字符串。
我设法在 Console.log 中做到了这一点,但我不知道如何将转换后的数据发送到 FormGroup。
我的 TS 文件:
accessoire: string;
this.demandeDevis = this.formBuilder.group({
accessoires: new FormArray([]),
accessoire: this.accessoire,
});
onCheckboxChange(event) {
const checkAcs: FormArray = this.demandeDevis.get(
'accessoires'
) as FormArray;
if (event.target.checked) {
checkAcs.push(new FormControl(event.target.value));
console.log(checkAcs.value.toString());
this.accessoire = checkAcs.value.toString();
} else {
let i: number = 0;
checkAcs.controls.forEach((item: FormControl) => {
if (item.value == event.target.value) {
checkAcs.removeAt(i);
return;
}
i++;
});
}
}
我的HTML:
<ul class="list-group list-group-flush">
<li class="list-group-item p-3">
Ventilateur cabine
<label class="switch">
<input type="checkbox" value="Ventilateur cabine" class="primary"
(change)="onCheckboxChange($event)" />
<span class="slider"></span>
</label>
</li>
<li class="list-group-item p-3">
Manoeuvre pompier
<label class="switch">
<input type="checkbox" class="primary" value="Manoeuvre pompier"
(change)="onCheckboxChange($event)" />
<span class="slider"></span>
</label>
</li>
<li class="list-group-item p-3">
Afficheur à tous les étages
<label class="switch">
<input type="checkbox" class="primary" value="Afficheur à tous les étages"
(change)="onCheckboxChange($event)" />
<span class="slider"></span>
</label>
</li>
<li class="list-group-item p-3">
Gong
<label class="switch">
<input type="checkbox" class="primary" value="Gong"
(change)="onCheckboxChange($event)" />
<span class="slider"></span>
</label>
</li>
<li class="list-group-item p-3">
Système de secours automatique
<label class="switch">
<input type="checkbox" class="primary" value="Système de secours automatique"
(change)="onCheckboxChange($event)" />
<span class="slider"></span>
</label>
</li>
</ul>
当我按照这些步骤操作时,我会在“Accessoire”上获得null,并在“Accessoire”上获得数组值。
我正在寻找的是从复选框列表中选择的值并将它们转换为带逗号的字符串。我不想以数组形式发送它们。
提前感谢您的解决方案。
编辑 1:
我使用了 @akash 解决方案的第一个选项,它正在工作。我有一个小问题。当我在input 上选择值时,我想将其发送到formControl ...我得到带括号的数组形式...我想要的是带逗号的字符串形式。这是我的问题的链接:
https://stackblitz.com/edit/reactive-form-string-values
【问题讨论】:
-
在 stackblitz 上提供最少的复制可以让人们帮助您,而无需猜测问题是什么,您可能会得到更多的答案
-
你不能简单地用 var string = array.join() 做到这一点吗?还是我错过了什么?
标签: angular angular-reactive-forms formarray