Я создал пример приложения на stackblitz для добавления значения массива в массив параметров .
Я бы предложил вместо создания FormArray поля параметров попробовать создать FormControl. Я изменил код создания FormGroup.
Вот код формы группы.
this.productGroup = this.fb.group({
name: ['', Validators.compose([Validators.required, Validators.maxLength(80)])],
variants: this.fb.array([
this.fb.group({
type: '',
options: ''
})
])
});
Я добавил два метода в компонент 'addOption' и 'removeOption', в то время как при добавлении опции вам нужно вставить строку в массив опций.
Вот код:
let variants = <FormArray>this.productGroup.controls.variants;
let variantFormGroup = <FormGroup>variants.controls[0];
let optionValue = variantFormGroup.controls.options.value;
if(!optionValue)
optionValue = [];
optionValue.push(`chip${this.currentIndex}`); // push your actutal string value
variantFormGroup.controls.options.setValue(optionValue);
this.currentIndex++; //don't consider this, this is just for adding new name
Вот код удаления строкового значения из массива опций
let optionValue = this.productGroup.value.variants[0].options;
if(optionValue.length > 0){
//let indexOf = optionValue.indexOf(removeValue); find the index number with your value.
optionValue.splice(0,1);
let variants = <FormArray>this.productGroup.controls.variants;
let variantFormGroup = <FormGroup>variants.controls[0];
variantFormGroup.controls.options.setValue(optionValue);
}
вот результат json после добавления нескольких значений в массив параметров:
{ "name": "", "variants": [ { "type": "", "options": [ "chip4", "chip5", "chip6", "chip7", "chip8" ] } ] }
Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы.