我可以在不需要 [formGroup] 的情况下使用 [formControl] 吗?

Can I use [formControl] without also needing [formGroup]?

提问人:physicsboy 提问时间:9/14/2018 最后编辑:user229044physicsboy 更新时间:3/17/2021 访问量:30456

问:

我正在我的UI中使用下拉列表,但是当我开始使用时,我抛出了错误:[formControl]

找不到具有未指定名称属性的控件

我在我的 .app.module.ts

我在 Google 上搜索并发现解决方案是在父级中使用 [formGroup],但我不确定如何正确实现,因为我正在从中定义我的 .divformControlsubscribe

myComp.component.html

<div class="exceptional-status">
  <select #exceptionalSelect id="excep-status-dropdown" [formControl]="select">
    <option disabled value="default">--Exceptional statuses--</option>
    <!-- other options here with *ngFor -->
  </select>
</div>

myComp.component.ts

select: FormControl;

mySubscription() {
  this.myService.myFunct.subscribe(res => {
    this.select = new FormControl(res.status)
  });
}
JavaScript HTML Angular 打字稿

评论

0赞 Mr code. 9/14/2018
您的变量声明也是错误的,请检查 Angular 文档:angular.io/guide/reactive-forms

答:

0赞 filipbarak 9/14/2018 #1

为什么要在订阅中定义表单控件?我的建议是在订阅之外构建表单框架,然后使用

mySubscription() {
  this.myService.myFunct.subscribe(res => {
    this.controls['select'].patchValue(res.status);
  });
}

评论

1赞 physicsboy 9/14/2018
事物从何而来?controls
18赞 yurzui 9/14/2018 #2

是的,您可以在没有 FormGroup 的情况下使用。FormControlDirective

Angular 期望定义 FormControl:

select = new FormControl();

mySubscription() {
  this.myService.myFunct.subscribe(res => {
    this.select.setValue(res.status)
  });
}

评论

0赞 physicsboy 9/14/2018
啊,太好了!我以为这可能是类似的东西,但不确定如何去做。我现在刚刚在谷歌上搜索了 和 之间的区别。setValue()patchValue()patch
2赞 Ganesh K 3/17/2021 #3

是的,您可以在没有 FormGroup 的情况下使用它。

select = new FormControl();

设置值:-

select.setValue('your data here');

要获取值:-

select.value