在Angular 4中重置ActivatedRoute

时间:2017-11-19 04:53:21

标签: angular2-routing typescript2.0

我正在使用的一些代码通过do while循环构建一系列面包屑链接。当ActivatedRoute为null时,循环终止,如下所示:

<div onclick="myFunc">
</div>

更新到Angular 4.4.4和TypeScript 2.5.3后,以下分配不再编译:

 constructor(
    private router: Router,
    private route: ActivatedRoute
  ) {
      this.router.events.filter(event => event instanceof NavigationEnd).subscribe((event) => {
      this.breadcrumbs = [];
      let currentRoute = this.route.root,
      url = '';
      do {
        const childrenRoutes = currentRoute.children;
        currentRoute = null;
        childrenRoutes.forEach(route => {
          if (route.outlet === 'primary') {
            const routeSnapshot = route.snapshot;
            url += '/' + routeSnapshot.url.map(segment => segment.path).join('/');
            this.breadcrumbs.push({
              label: route.snapshot.data,
              url:   url
            });
            currentRoute = route;
          }
        });
      } while (currentRoute);
    });

其中当前路线为ActivatedRoute。

  

类型null不能分配给ActivateRoute类型

我已经尝试了

currentRoute = null;

但这又会打破方法的其他部分。所以我不确定我是否应该以更合适的方式解决这些问题或重置ActivatedRoute。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用ActivatedRoute | null,但是除非我有令人信服的理由提出null的值,否则我通常会回避null

尝试使用currentRoute = undefined