辅助路径的Angular RouteReuseStrategy(仅重用主要部分)

时间:2019-05-14 06:17:51

标签: angular lazy-loading angular-routing

假设您有一条主要路线和一条辅助路线。 辅助路径代表应用程序的一部分,可以在其中查看详细信息。 因此,大多数情况下,辅助路由部分未激活/为空。 当用户单击主体部分的详细信息按钮时,将设置辅助路径并显示详细信息组件。

问题是:每当设置辅助路径时,主要部分也会重新加载,这对我来说是不希望有的行为。我的意思是,主要路线不会改变。为什么要重新加载?

据我所知是由于默认的RouteReuseStrategy(https://github.com/angular/angular/blob/51955bf6205272b1d2b98ff5b6dafd3823039ae2/packages/router/src/route_reuse_strategy.ts#L65)。一旦routeConfig发生变化-这将在设置辅助路由时发生-方法shouldReuseRoute返回false,因此组件不会被重用。

我试图解决此问题的方法是创建一个自定义RouteReuseStrategy,在其中我仅比较shouldReuseRoute中的主要路线。因此,如果用户单击详细信息按钮,并且仅设置了辅助路径,而主路径保持不变,则shouldReuseRoute返回true。但这导致根本不加载应用程序的辅助部分。似乎所有router-outlets的所有组件都被重用,因此detail组件不会被加载,因为它以前不存在。对我来说很有意义...

现在我不知道如何解决这个问题?谁能帮我?非常感谢。

0 个答案:

没有答案