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