Angular 2 嵌套自定义组件中没有 FormGroupDirective 提供程序

sup*_*jos 2 angular2-forms angular

在 Angular 2 RC.5 中,我找不到上述错误的修复:

Unhandled Promise rejection: Template parse errors:
No provider for FormGroupDirective ("p>Custom begin </p>
      <p>Host contains {{hostFormGroup.directives.length}} directives</p>
      [ERROR ->]<nested></nested>
      <p>Custom end </p>
    </div>
"): CustomComponent@4:6 ; Zone: <root> ; Task: Promise.then ; Value:
Run Code Online (Sandbox Code Playgroud)

当嵌套在另一个自定义组件中的自定义组件依赖于 contains 时,就会发生这种情况@Host() hostFormGroup: FormGroupDirective

这是一个展示场景的plunker 。AppComponent显示包含 CustomComponent 的反应式/模型驱动表单(暂时没有控件,但这并不重要) ,而CustomComponent又具有NestedComponent。有关错误详细信息,请参阅开发人员控制台。

第一级自定义组件可以依赖于托管FormGroupDirective或不依赖,这不会影响问题。如果它具有依赖性,则可以正确解决。无论第一级组件如何,第二级自定义组件都不会发生同样的情况。

如果直接在AppComponent中使用相同的NestedComponent,问题就会消失。

我缺少什么?TA

主要部分代码如下,供参考:

Unhandled Promise rejection: Template parse errors:
No provider for FormGroupDirective ("p>Custom begin </p>
      <p>Host contains {{hostFormGroup.directives.length}} directives</p>
      [ERROR ->]<nested></nested>
      <p>Custom end </p>
    </div>
"): CustomComponent@4:6 ; Zone: <root> ; Task: Promise.then ; Value:
Run Code Online (Sandbox Code Playgroud)

Dav*_*e V 8

错误消息会为您指明正确的方向。您需要声明其FormGroupDirective是提供商。IE

@Component({
    ...
    providers: [FormGroupDirective]
});
Run Code Online (Sandbox Code Playgroud)

否则,您需要在更高级别声明它,例如在您的模块中,以便您可以在模块范围内使用它。