Angular2 -- 来自 TypeScript 基础抽象的 @ViewChild class
Angular2 -- @ViewChild from TypeScript base abstract class
我在看@this SO Q & A,想知道是否可以用一个基数 abstract class
代替?除了 interface
,是否有可能在 child 组件中有不同的基础 class 实现,parent 组件可以通过 @ViewChild
装饰器访问这些实现在 Angular2?
理想情况下,我希望有一种方法可以让通过 parent Router
实例化的 child 组件能够调用 parent 路由器 --那有意义吗?我希望 child 能够调用 parentRouter.navigate(["SomeOtherRoute", { args: 'blah' }]);
.
我最初的方法是让 child 组件实现一个基础 class,parent 组件将通过 @ViewChild
装饰器获取对它的引用。 parent 将 subscribe
响应 child 尝试调用导航事件的操作,并且其处理程序将调用 router.navigate
(因为它在 parent级)。
您不能使用 @ViewChildren()
或任何类似的装饰器来查询组件的子类。
仅支持模板变量的名称以及具体组件和指令类型(在您的视图中实际实例化为组件的类型)。
是的!这是可能的,我发现在某些情况下它可以更清洁,但对于您的用例,我认为服务更可取。请参阅我对有关接口的原始问题的回答。我也许应该把它贴在这里。
其实很简单。例如,如果您有一个扩展 PersonComponent 的 class EmployeeComponent,它是一个抽象 class.
您可以通过在 EmployeeComponent 中添加以下内容使其变得平易近人:
providers: [ {provide: PersonComponent, useExisting: EmployeeComponent }]
并在您的容器组件中使用 ViewChildren() 或 ContentChildren(),如下所示:
@ViewChildren(PersonComponent) public persons: QueryList<PersonComponent>;
我在看@this SO Q & A,想知道是否可以用一个基数 abstract class
代替?除了 interface
,是否有可能在 child 组件中有不同的基础 class 实现,parent 组件可以通过 @ViewChild
装饰器访问这些实现在 Angular2?
理想情况下,我希望有一种方法可以让通过 parent Router
实例化的 child 组件能够调用 parent 路由器 --那有意义吗?我希望 child 能够调用 parentRouter.navigate(["SomeOtherRoute", { args: 'blah' }]);
.
我最初的方法是让 child 组件实现一个基础 class,parent 组件将通过 @ViewChild
装饰器获取对它的引用。 parent 将 subscribe
响应 child 尝试调用导航事件的操作,并且其处理程序将调用 router.navigate
(因为它在 parent级)。
您不能使用 @ViewChildren()
或任何类似的装饰器来查询组件的子类。
仅支持模板变量的名称以及具体组件和指令类型(在您的视图中实际实例化为组件的类型)。
是的!这是可能的,我发现在某些情况下它可以更清洁,但对于您的用例,我认为服务更可取。请参阅我对有关接口的原始问题的回答。我也许应该把它贴在这里。
其实很简单。例如,如果您有一个扩展 PersonComponent 的 class EmployeeComponent,它是一个抽象 class.
您可以通过在 EmployeeComponent 中添加以下内容使其变得平易近人:
providers: [ {provide: PersonComponent, useExisting: EmployeeComponent }]
并在您的容器组件中使用 ViewChildren() 或 ContentChildren(),如下所示:
@ViewChildren(PersonComponent) public persons: QueryList<PersonComponent>;