这让我发疯了,我在枪下,不能再花一整天的时间在这上面。
我正在尝试在组件中手动设置一个控制值(’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,我不认为这是调用控件的有效方法。
this.form
updateValue()
我也试过打电话updateValueAndValidity()没有成功:(。
updateValueAndValidity()
我只会ngControl="dept"在表单元素上使用,就像我对表单的其余部分所做的那样,但它是一个自定义指令/组件。
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>
更新日期:19/03/2017
this.form.controls['dept'].setValue(selected.id);
老的:
现在我们被迫进行类型转换:
(<Control>this.form.controls['dept']).updateValue(selected.id)
我同意,不是很优雅。希望这在未来的版本中得到改进。