Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何在自定义Ng2表单元素中访问NgFormControl_Angular_Dart_Angular2 Forms_Angular Dart - Fatal编程技术网

Angular 如何在自定义Ng2表单元素中访问NgFormControl

Angular 如何在自定义Ng2表单元素中访问NgFormControl,angular,dart,angular2-forms,angular-dart,Angular,Dart,Angular2 Forms,Angular Dart,我通过实现ControlValueAccessor编写了自己的自定义表单元素DateInputComponent,并像这样使用它: <my-date-input ngControl="date"></my-date-input> 据我所知,ngControl是[ngFormControl]=“myControlGroup.controls['date']”的语法糖 现在,在我的DateInputComponent中,我想访问NgFormControl 我试着用@In

我通过实现
ControlValueAccessor
编写了自己的自定义表单元素
DateInputComponent
,并像这样使用它:

<my-date-input ngControl="date"></my-date-input>

据我所知,
ngControl
[ngFormControl]=“myControlGroup.controls['date']”的语法糖

现在,在我的
DateInputComponent
中,我想访问
NgFormControl

我试着用
@Input NgFormControl NgFormControl绑定它
但它从未被设置,我尝试用
DateInputComponent(NgFormControl-NgFormControl)
注入它,但失败了,因为没有提供程序

正确的方法是什么


(可能我的方法也不对……我希望这个
DateInputComponent
能够单独显示可能发生的所有验证错误。)

注入指令的方法是正确的,但是问题是,
ngControl
可以被认为是NgFormControl的语法糖,但它不是同一个类

所有表单控件都是从NgControl扩展而来的,这就是您应该注入组件的内容<代码>日期输入组件(NgControl NgControl)

所有表单指令都可以互换工作,因此它们都提供NgControl作为它们公开的接口。这允许日期组件的用户使用适用于其用例的任何指令:

  • NgModel
    :如果他们只是想提供或聆听价值观
  • NgFormControl
    :如果他们想提供控件
  • NgControlName
    :如果他们想在ControlMap中使用字符串标识符(这是您在上面使用的)

我让它与解决方案一起工作建议:通过注射
注射器
并从中读取
NgControl

类DateInputComponent实现ControlValueAccessor,AfterViewInit{ 注入器(u注入器),; DateInputComponent(该喷油器); NGC控制; @凌驾 ngAfterViewInit(){ 控制=_injector.get(NgControl.control); } } 直接注入
NgControl
,正如Ted所建议的那样,不起作用,因为它会导致循环依赖


尝试访问构造函数中的
NgControl
将无法工作,因为它还不可用。

ngFormControl来自哪里?正如我所说,据我所知,
NgControl=“date”
是分配此属性的语法糖。谢谢。但是当我尝试添加
DateInputComponent(NgControl-NgControl)
时,我的应用程序不再编译,说:
无法实例化循环依赖项!NgControlName
这是我们使用的一种常见模式,因此它应该是可能的。您可以在这里看到一个示例:您绝对不需要使用喷油器。如果我在代码中看到这一点,那就是代码的味道。