繁体   English   中英

如何从角度指令或组件中引用某种类型的子控制器?

[英]How to reference child controllers of a certain type from an angular directive or component?

当我定义角度组件或指令时,可以使用'require'绑定到诸如require: {'parentForm' : '^^ngForm'}的父控制器。

我想做同样的事情,但是相反: require: {'childrenForms' : '[children]ngForm'}会将childrenForms绑定到组件中包含的所有ngForms控制器的数组。

我想要这样做是为了构建将汇总行为添加到我无法控制的指令的组件。 例如,my-special-form容器可以具有isValid()方法,如果该容器中的所有ng-forms目前都有效,则该方法返回true。

有什么办法吗? 我是否想犯错?

没有选择require Angular中的内部子指令。 就我个人而言,我不认为您所考虑的方法将是一个不错的方法,例如此处的父指令想直接了解子指令。 相反,我会说选择一种方法,其中子指令通过调用其方法之一将所需的数据传递给父控制器。

如果您只想验证内部表单,则可以使用某些名称将所有内部表单包装在包装器表单ng-form (您可以使用ng-form指令将嵌套的表单嵌套在angular中)。 您可以在下面的示例中看到,我用一个包装器表单元素ng-form包裹了所有内部ng-form 因此,发生的情况是,当任何一种表单失效时,父表单将失效。 如果所有表格均有效,则parentForm也将变为valid

标记

{{parentForm.$valid}}
<div ng-form name="parentForm" my-directive>
   <form name="form1" some-directive>
     .....
   </form>
   <form name="form2" some-directive>
     .....
   </form>
   <form name="form3" some-directive>
     .....
   </form>
</div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM