使用ngControl导致错误:没有ControlContainer的提供程序

时间:2016-05-17 19:29:25

标签: angular

我正在尝试在我的应用中首次使用ngControl:

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

我错过了什么?

2 个答案:

答案 0 :(得分:12)

我认为您忘记将md-input组件包装在form标记中,否则ngControl将无效:

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

该指令只能用作NgForm或NgFormModel的子代。

答案 1 :(得分:1)

要解决此问题,您有两个选择: 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上的这些相同问题

可以帮助你。