首页 > 解决方案 > 如何从导航触发的路由解析器访问先前激活的组件?

问题描述

这是一个容器组件,它具有不同的子路由 ( router-outlet) 可以在其子组件内导航(假设组件在加载时不会更改,仅在导航后更改输入参数)。

现在我需要在路由器解析数据时访问当前的子组件属性。但是看一下console.log(),快照组件只显示构造函数属性,而不是完整的组件属性,其中定义的方法。

@Injectable()
export class ReportResolverService implements Resolve<any> {

  constructor(
    private router: Router, public route: ActivatedRoute
  ) { }

  resolve() {
    const snapshot = this.route.snapshot;
    console.log(snapshot.component);
  }
}

截图如下:

在此处输入图像描述

它仅显示组件构造函数属性,而不是整个类属性。

即使我将注入更改route为参数resolve()

标签: angulartypescript

解决方案


ActivatedRouteSnapshot 上的组件属性属于以下类型:-

component: Type<any> | string | null;

如果您查看下面的Type接口描述:-

https://angular.io/api/core/Type#description),

它将代表构造函数。我相信这就是为什么它显示构造函数而不是类属性的原因。


推荐阅读