0

我在我的角度页面中遇到一个问题,有时我的页面没有加载。我已经在路由中启用了跟踪,并观察到在 NavigationCancel 事件中,它会引发错误原因:

在此处输入图像描述

我的路线解析器如下

@Injectable()
export class MyResolver implements Resolve<any> {
  constructor(...) { }

  resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
    const newPath = doSomeStuff()
    this.router.navigateByUrl(newPath)
  }
}

我怀疑因为我没有返回任何东西并重定向到新路径,所以解析器没有发出任何值,因此会出现这个问题。另请注意,其他解析器正在正确发出,我没有看到任何问题。有什么建议可以克服这个问题吗?如果需要任何进一步的细节,很高兴分享。

4

1 回答 1

2

实际上,我今天找到了解决方案,我观察到上面给出的解析器没有问题。MyResolver我对它没有发出价值的行为感到困惑。问题出在我的子路由中定义的其他解析器上。在调用我的 ui 页面之前,这些解析器也会被调用,并且MyChildResolver当此重定向发生时,其中一个解析器 () 不会发出值。所以,我在下面给出的路线

{
    path: '',
    resolve: { payload: MyResolver },
    children: [
      {
        path: ':childOne',
        component: MyChildComponent,
        resolve: { payload: ChildResolver },
        children: [
          { path: '', redirectTo: 'FirstChildOfChild', pathMatch: 'full' },
          {
            path: 'FirstChildOfChild',
            component: MyChildOfChildComponent,
            resolve: { payload: ChildOfChildResolver },
          },
        ]
      }
    ]
}

我在所有解析器中添加了 console.log,并确定了路由跟踪中未捕获的日志。一旦我解决了这个问题,应用程序就会一直显示。

于 2020-10-03T04:53:11.270 回答