繁体   English   中英

Angular2 - 来自TypeScript基础抽象类的@ViewChild

[英]Angular2 — @ViewChild from TypeScript base abstract class

我正在寻找@ 这个SO Q&A ,并想知道是否有可能有一个基础abstract class 而不是一个interface ,是有可能有在那些经由父组件访问的子组件的基类的不同的实现@ViewChildAngular2装饰?

理想情况下,我希望有一种方法可以通过父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()或任何类似的装饰器来查询组件的子类。

仅支持模板变量的名称和具体的组件和指令类型(在视图中实际实例化为组件的类型)。

是! 这是可能的,我发现在某些情况下它可以更干净,但对于您的用例,我认为服务是可取的。 请参阅我对有关接口的原始问题的回答。 我也许应该把它贴在这里。

https://stackoverflow.com/a/41151492/4293638

暂无
暂无

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

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