2016-09-23 26 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

實際上有一個或兩個代碼問題,但我已經用更正更新了答案。謝謝。 –

相關問題