2016-05-17 155 views
2

我試圖使用ngControl首次在我的應用程序:使用ngControl造成錯誤:沒有提供程序ControlContainer

<md-input placeholder="Amount" value="0" ngControl="ammount" required></md-input> 

添加了以下在我的組件:

import { FORM_PROVIDERS,FORM_DIRECTIVES } from '@angular/common'; 

.. 

directives: [MD_INPUT_DIRECTIVES, 
    FORM_DIRECTIVES, 
    ], 
    providers: [FORM_PROVIDERS], 

和我得到這個錯誤:

browser_adapter.ts:78 EXCEPTION: Error: Uncaught (in promise): Template parse errors: 
No provider for ControlContainer (" 

[ERROR ->]<md-input placeholder="Amount" value="0" ngControl="ammount" required></md-input> 

我在想什麼?

回答

8

我認爲你忘了包裹md-input成分form標籤,否則ngControl將無法​​正常工作:

<form> 
    ... 
    <md-input placeholder="Amount" value="0" ngControl="ammount" required></md-input> 
    ... 
</form> 

This directive can only be used as a child of NgForm or NgFormModel.

0

爲了解決這個問題,你有兩個選擇: A.在main.ts:

import {FORM_PROVIDERS} from 'angular2/common'; 

// other code here 

bootstrap(AppCmp, [ 
    ROUTER_PROVIDERS, 
    provide(LocationStrategy, { useClass: HashLocationStrategy }), 
    FORM_PROVIDERS 
]); 

B.在組件使用形式:

import {FORM_PROVIDERS, FORM_DIRECTIVES} from 'angular2/common'; 
@Component({ 
    providers: [FORM_PROVIDERS], 
    directives: [FORM_DIRECTIVES] 
}) 

從這些相同的問題而採取的在github上

可以幫你。

相關問題