我有一个使用transclude功能的父组件.在其被转换的部分中,默认情况下有子组件:
export class ParentController { // some logic here } angular.module('dmp').component('parentObject',{ bindings: { },controller: ParentController,transclude: true,templateUrl: 'test/parent.html' }); } export class ChildController { } angular.module('dmp').component('childObject',{ bindings: { },require: { parentCtrl: '^parentObject' },controller: ChildController,templateUrl: 'test/child.html' }); }
index.html的:
<parent-object> </parent-object>
parent.html
<div ng-transclude> <child-object></child-object> </div>
请注意< child-object>是在父对象的transclude部分
我收到以下错误:
Controller 'parentObject',required by directive 'childObject',can't be found!
如果我这样做它按预期工作,但这不是我的情况.
<parent-object> <child-object></child-object> </parent-object>
谢谢
编辑与gyc评论有关.
如果我理解正确,我可以删除< div ng-transclude> part而只是使用子对象而不进行转换.这没关系,但我想稍后说:
<parent-object> <some-other-object></some-other-object> </parent-Object>
然后< child-object>将被< some-other-object>取代.如果我不使用转换,则不会发生< child-object>会保持.
解决方法
尝试在childObject定义中更改此项
require: { parentController: '^parentObject' }
也许parentCtrl不是parentController的已定义别名