2016-09-23 23 views
4

我在Angular2 RC1中开发SPA,但是自从最终版本发布以来,我的组织决定将代码移植到Angular 2 GA。虽然我可以修复大部分破碎的东西,但我真的很困难。
在我以前的RC1代码中,我使用了ControlGroup和Control以及FormBuilder。我使用它们来执行通常的形式,如验证,添加&删除控件等。但现在显然它们已被删除,我不知道是什么取代了它们。
我尝试了API指南FormControl或FormGroup的其他几个类,但都没有真正帮助。我想知道上面两个班级的替代人选是什么。ControlGroup和Control在Angular2 GA/Final版本中的替代方案是什么?

编辑: FormControl和FormGroup已经消除在打字稿文件中的错误,但是,在标记,我得到inline template:0:0 caused by: No provider for FormBuilder!错误。

更新:我可以使用FormGroup,FormControl和FormBuilder。上述错误通过将ReactiveFormsModule添加到app.module.ts文件中得到解决。不过,我得到一个错误inline template:30:61 caused by: this.form._updateTreeValidity is not a function.
,在模板具体线路是
<form #userForm="ngForm" (ngSubmit)="submitUser()" [formGroup]="userForm" novalidate autocomplete="off">

任何想法?

回答

5

更新到当前角(V4.0.1)

FormGroupFormBuilder可以用来代替。 FormBuilder只是FormGroup的简写方法。所以建议用于较大/复杂的表单。

上面显示的代码存在的问题是,您声明了FormGroup和ngModel- #userForm="ngForm",这对我的理解是不能一起使用的 - not easily anyway ......我也犯了这个错误。

private myForm: FormGroup; 

constructor(){ 
    this.myForm = new FormGroup({ 
     name: new FormGroup({ 
      first: new FormControl('Nancy', Validators.required), 
      last: new FormControl('Drew') 
     }), 
     email: new FormControl('') 
    }); 
} 

//The same thing using 'FormBuilder': (Note this would not change the template) 
constructor(@Inject(FormBuilder) fb: FormBuilder) { 
    this.myForm = fb.group({ 
     name: fb.group({ 
      first: ['Nancy', Validators.required], 
      last: 'Drew', 
     }), 
     email: '', 
    }); 
} 

而且你的模板,像这样:

<form [formGroup]="myForm" novalidate autocomplete="off"> 
    <div formGroupName="name" novalidate autocomplete="off"> 
     <input type="text" formControlName="first"/> 
     <input type="text" formControlName="last"/> 
     <span [hidden]="myForm.controls['name'].valid">Error</span> 
    </div> 
    <input type="text" formControlName="email"/> 
</form> 

替代这种方法是使用Angular's Template Driven Forms,这就是你将使用[(ngModel)]="someInput"

+0

然而,使用的正是这种模式,我get'不能绑定到'FormControlName',因为它不是'input''的已知属性;我不得不使用''formControlName“=”control-name“(在Angular 2.0.2中)。我仍然得到了可爱的构造函数双击。 – msanford

+0

确保你使用了正确的'FormModule imports'。看到这里提出的问题:[无法绑定到'formGroup',因为它不是'form'的已知属性](http://stackoverflow.com/questions/39152071/cant-bind-to-formgroup-since -it-isnt-a-known-property-of-form) –

+0

实际上有一个或两个代码问题,但我已经用更正更新了答案。谢谢。 –

相关问题