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 表单使用什么方法注册表单控件名称_Angular_Angular Reactive Forms - Fatal编程技术网

Angular 表单使用什么方法注册表单控件名称

Angular 表单使用什么方法注册表单控件名称,angular,angular-reactive-forms,Angular,Angular Reactive Forms,有人知道被动表单使用什么方法使formGroup通过formControlName“查找”控件吗。rxForms是否依赖于闭包并忽略angular的组件分离,或者每个控件是否向服务注册自身,或者。。。?我查看了本机代码,但最终基本上无法解决问题。我认为情况正好相反。FormControlName指令查找父指令FormGroupDirective 这就是为什么我这么认为 注:摘录自Angular 8.2.x的源代码 导出常量formDirectiveProvider:any={ 提供:控制容器,

有人知道被动表单使用什么方法使formGroup通过formControlName“查找”控件吗。rxForms是否依赖于闭包并忽略angular的组件分离,或者每个控件是否向服务注册自身,或者。。。?我查看了本机代码,但最终基本上无法解决问题。

我认为情况正好相反。
FormControlName
指令查找父指令
FormGroupDirective

这就是为什么我这么认为

注:摘录自Angular 8.2.x的源代码

导出常量formDirectiveProvider:any={
提供:控制容器,
useExisting:forwardRef(()=>FormGroupDirective)
};
@指令({
选择器:“[formGroup]”,
提供者:[formDirectiveProvider],
主机:{'(提交)'onSubmit($event)',(reset)'onReset()',
exportAs:'ngForm'
})
导出类FormGroupDirective扩展ControlContainer实现表单,
OnChanges{/*…*/}
@指令({选择器:'[formControlName]',提供程序:[controlNameBinding]})
导出类FormControlName扩展了NgControl实现OnChanges、OnDestroy{
/* ... */
建造师(
@可选()@Host()@SkipSelf()父级:ControlContainer,//此处!
@可选()@Self()@Inject(NG_验证器)验证器:数组,
@可选()
数组

还引用了文件:

[…]它告诉DI框架通过检查子元素的位置来解析视图,并在到达当前组件的主元素时停止


问题是..Angular如何注入
parent
参数的值


我还没有探索这一部分,我很愿意,但是如果你有时间,你可以从这个小演示开始。打开开发工具,按
CTRL+p
,键入
form\u control\u name
,然后在构造函数中放置一个断点。调用堆栈视图应该是你的朋友。:)

您想知道
formControlName
是如何工作的吗?这就是为什么formControl仍然必须嵌套在formGroup中的原因。我想知道为什么被动方法仍然依赖于模板将控件分组到表单中。