简体   繁体   中英

Using ngControl caused error: No provider for ControlContainer

I'm trying to use ngControl for the first time in my app:

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

Added the following in my component:

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

..

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

and I get this error:

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>

What am I missing?

I think that you forgot to wrap the md-input component in form tag, otherwise ngControl won't work:

<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.

To fix that, you have 2 options: A. in main.ts:

import {FORM_PROVIDERS} from 'angular2/common';

// other code here

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

B. in your component that uses the form:

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

Taken from these same issues on github

May help you.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM