62

我在 Plunkr 上有一个 Angular 2 RC4 基本表单示例,它似乎引发了以下错误(在 Chrome DEV 控制台中)

这是plunkr

https://plnkr.co/edit/GtPDxw?p=preview

错误:

browser_adapter.ts:82 EXCEPTION: Error: Uncaught (in promise): EXCEPTION: Error in ./App class App - inline template:1:7
ORIGINAL EXCEPTION: formGroup expects a FormGroup instance. Please pass one in.
           Example: <form [formGroup]="myFormGroup">

ORIGINAL STACKTRACE:
Error: formGroup expects a FormGroup instance. Please pass one in.
           Example: <form [formGroup]="myFormGroup">

    at new BaseException (https://npmcdn.com/@angular/forms@0.2.0/src/facade/exceptions.js:27:23)
    at FormGroupDirective._checkFormPresent (https://npmcdn.com/@angular/forms@0.2.0/src/directives/reactive_directives/form_group_directive.js:110:19)
    at FormGroupDirective.ngOnChanges (https://npmcdn.com/@angular/forms@0.2.0/src/directives/reactive_directives/form_group_directive.js:39:14)
    at DebugAppView._View_App0.detectChangesInter
4

6 回答 6

85

您的代码中存在一些问题

  • <div [formGroup]="form"><form>标签之外
  • <form [formGroup]="form">FormGroup但是包含is的属性的名称loginForm因此应该是<form [formGroup]="loginForm">
  • [formControlName]="dob"它传递dob不存在的属性的值。您需要的是传递dob类似[formControlName]="'dob'"或更简单的字符串formControlName="dob"

Plunker 示例

于 2016-07-19T06:53:39.883 回答
50

我正面临这个问题,并通过在表单属性中添加检查来解决。当 FormGroup 未初始化时,可能会发生此问题。

<form [formGroup]="loginForm" *ngIf="loginForm">
OR
<form [formGroup]="loginForm" *ngIf="this.loginForm">

这将不会呈现表单,直到它被初始化。

于 2020-05-28T07:54:37.353 回答
10

我正在使用反应形式并遇到了类似的问题。帮助我的是确保我FormGroup在课堂上设置了对应的。像这样的东西:

myFormGroup: FormGroup = this.builder.group({
    dob: ['', Validators.required]
});
于 2018-08-16T14:53:13.440 回答
5

formBuilder在将from的初始化移动ngOnInit到构造函数后,我遇到了同样的错误并解决了它。

于 2020-12-15T16:42:45.090 回答
3

我遇到了同样的错误,我解决了从中删除异步等待模式的问题:
原始代码

async ngOnInit()
{
  this.id = await this.route.snapshot.paramMap.get('id');

工作代码

ngOnInit()
{
  this.id = this.route.snapshot.paramMap.get('id');

我认为可能与上面的@johannesMatevosyan 回答有关。我真的不知道为什么,但正在为我工​​作。

于 2021-03-30T04:42:06.900 回答
2

当我指定fromGroupName而不是formArrayName时出现此错误。

确保正确指定它是表单数组还是表单组。

<div formGroupName="formInfo"/>

<div formArrayName="formInfo"/>

于 2019-04-23T15:28:56.030 回答