[英]Angular2 — @ViewChild from TypeScript base abstract class
我正在寻找@ 这个SO Q&A ,并想知道是否有可能有一个基础abstract class
? 而不是一个interface
,是有可能有在那些经由父组件访问的子组件的基类的不同的实现@ViewChild
在Angular2装饰?
理想情况下,我希望有一种方法可以通过父Router
实例化的子组件能够调用父路由器 - 这有意义吗? 我希望孩子能够调用parentRouter.navigate(["SomeOtherRoute", { args: 'blah' }]);
。
我最初的方法是让子组件实现一个基类,父组件将通过@ViewChild
装饰器获得引用。 父级将subscribe
试图调用导航事件的子操作,并且其处理程序将调用router.navigate
(因为它具有父级别的路由器)。
它实际上非常简单。 例如,如果您有一个EmployeeComponent类,它扩展了PersonComponent,它是一个抽象类。
您可以通过在EmployeeComponent中添加它来使其平易近人:
providers: [ {provide: PersonComponent, useExisting: EmployeeComponent }]
并在容器组件中使用ViewChildren()或ContentChildren(),如下所示:
@ViewChildren(PersonComponent) public persons: QueryList<PersonComponent>;
您不能使用@ViewChildren()
或任何类似的装饰器来查询组件的子类。
仅支持模板变量的名称和具体的组件和指令类型(在视图中实际实例化为组件的类型)。
是! 这是可能的,我发现在某些情况下它可以更干净,但对于您的用例,我认为服务是可取的。 请参阅我对有关接口的原始问题的回答。 我也许应该把它贴在这里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.