小编典典

手动设置 FormBuilder 控件的值

all

这让我发疯了,我在枪下,不能再花一整天的时间在这上面。

我正在尝试在组件中手动设置一个控制值(’dept’),但它只是不工作 - 即使是新值日志也可以正确控制台。

这是 FormBuilder 实例:

initForm() {
  this.form = this.fb.group({
    'name': ['', Validators.required],
    'dept': ['', Validators.required],
    'description': ['', Validators.required],
  });
}

这是接收所选部门的事件处理程序:

deptSelected(selected: { id: string; text: string }) {
  console.log(selected) // Shows proper selection!

  // This is how I am trying to set the value
  this.form.controls['dept'].value = selected.id;
}

现在,当表单提交并且我注销时,this.form该字段仍然是空白的!我见过其他 ppl 使用updateValue(),但这是
beta.1,我不认为这是调用控件的有效方法。

我也试过打电话updateValueAndValidity()没有成功:(。

我只会ngControl="dept"在表单元素上使用,就像我对表单的其余部分所做的那样,但它是一个自定义指令/组件。

<ng-select
  [data]="dept"
  [multiple]="false"
  [items]="depts"
  (selected)="deptSelected($event)" <!-- This is how the value gets to me -->
  [placeholder]="'No Dept Selected'">
</ng-select>

阅读 67

收藏
2022-05-30

共1个答案

小编典典

更新日期:19/03/2017

this.form.controls['dept'].setValue(selected.id);

老的:

现在我们被迫进行类型转换:

(<Control>this.form.controls['dept']).updateValue(selected.id)

我同意,不是很优雅。希望这在未来的版本中得到改进。

2022-05-30