2016-05-13 49 views
0

執行表單驗證目前我對角2的2.0.0-rc.1版本,我想創造一些基本形式驗證,但我沒有在天移動這個前鋒,因爲我不能讓過去的這錯誤:如何角2

No provider for ControlContainer 

我在Github上檢查this open issue但一點信息給出爲什麼發生這種情況或如何解決它。似乎這是自第一次測試版本以來一直存在的情況。

我試圖導入並注入最事情的形式相關的(FORM_PROVIDERSFORM_DIRECTIVES你的名字),但我最近一次嘗試是這樣的:

import {NgForm, ControlContainer} from '@angular/common'; 

@Component({ 
    selector: 'form-input', 
    templateUrl: 'alonglongtemplateurl.html', 
    styleUrls: ['alonglongstyleurl.css'], 
    directives: [ 
    NgForm 
    ], 
    providers: [ 
    ControlContainer 
    ] 
}) 

模板:

<div> 
    <input ngControl="name"> 
</div> 

然後我這樣使用它:

<form #myForm="ngForm"> 
    <form-input></form-input> 
</form> 

儘管我注射w它要求我仍然得到相同的錯誤。

從最新版本開始,在Angular 2中使用表單元素驗證的正確方法是什麼?

+0

https://angular.io/docs/ts/latest/guide/forms.html –

+0

@GünterZöchbauer我讀過10億次,但他們的例子不起作用。 – Chrillewoodz

+0

https://youtu.be/ihYc9y7dQA0 –

回答

0

我認爲你必須在你輸入的表單元素使用ngControl

<div> 
    <form> 
    <input ngControl="name"> 
    </form> 
</div> 

指令的形式是那些平臺的一部分,這樣你就不會需要包括他們明確。提供者也是如此。

+0

我這樣做,但在組件之外。 – Chrillewoodz

+0

我認爲這是問題所在。 –

+0

也許你可以利用ng-include。看到這篇文章(「表單組件的字段」):http://restlet.com/blog/2016/02/17/implementing-angular2-forms-beyond-basics-part-2/。這樣你的輸入將是形式的一部分... –