4

我制作了一个具有反应形式组的可重用组件。我有 2 个输入属性“名称”和“描述”,我正在使用 ngFor 设置这些输入属性来迭代组件。

不幸的是,即使我将表单控件组中的开始/默认值设置为输入属性,当我单击提交时,角度也会将这两个输入属性读取为“null”,而不是通过输入属性设置的值。

表单组 + 输入属性:

  @Input() categoryID;
  @Input() categoryTitle;
  @Input() categoryDescription; 

  categoryForm = new FormGroup({
    categoryTitle: new FormControl(this.categoryTitle, [Validators.minLength(3), Validators.maxLength(50)]),
    categoryDescription: new FormControl(this.categoryDescription, [Validators.minLength(5), Validators.maxLength(200)])
  })

提交功能:

this.startLoading();

this.admin.updateCategory(this.categoryForm.value.categoryTitle, this.categoryForm.value.categoryDescription, this.categoryID)

如果我尝试直接提交有效的输入属性的值,但是如果我对表单进行修改,我将不再提交更改后的值,这样就没有意义了。

4

1 回答 1

3

初始化组件视图后,您应该创建 FormGroup。因此,您可以实现AfterViewInit并将以下代码放入ngAfterViewInit function.

ngAfterViewInit(){
  this.categoryForm = new FormGroup({
    categoryTitle: new FormControl(this.categoryTitle, [Validators.minLength(3), Validators.maxLength(50)]),
    categoryDescription: new FormControl(this.categoryDescription, [Validators.minLength(5), Validators.maxLength(200)])
  })
}
于 2018-10-29T16:38:43.517 回答