Angular7 Reactive Forms输入属性值在控制器/组件中不会更改,仅在HTML标记上会更改

时间:2018-10-29 16:23:46

标签: angular angular-reactive-forms angular-forms angular7 angular-changedetection

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

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

表单组+输入属性:

  @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)

如果我尝试直接提交可以使用的input属性的值,但是如果我对表单进行了修改,则不再提交更改后的值,这样就没有意义了。

1 个答案:

答案 0 :(得分: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)])
  })
}