gpt4 book ai didi

angular - 在 Angular 2 的路由器中获取对当前路由组件的引用?

转载 作者:太空狗 更新时间:2023-10-29 17:24:53 26 4
gpt4 key购买 nike

有没有一种干净的方法来获取对当前路由组件的引用?

这似乎行得通,但似乎很老套:

 this.router.currentInstruction.
component.componentType.prototype.somePropertyOrFunction();

最佳答案

事实上,您无权使用表达式访问与当前路由关联的组件实例。您只能获得组件类型。这就是为什么您需要使用原型(prototype)但您获得了对函数的引用而不是对组件实例的方法的引用。

主要结果是 this 关键字(如果在方法中使用)将是未定义的。

要访问与当前路由关联的组件实例,您可以利用 OnActivate Hook 接口(interface)在路由激活时将此实例设置为共享服务:

@Component({
selector: 'some-cmp',
template: `
<div>routerOnActivate: {{log}}</div>
`})
export class SomeCmp implements OnActivate {
constructor(private service:RouteStateService) {
}

routerOnActivate(next: ComponentInstruction, prev: ComponentInstruction) {
this.service.setCurrentRouteComponent(this);
}
}

然后您就可以通过这种方式访问​​组件实例:

var component = this.service.getCurrentRouteComponent();

关于angular - 在 Angular 2 的路由器中获取对当前路由组件的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36200273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com