【发布时间】:2018-07-27 22:04:24
【问题描述】:
是否有可能让路由器命名的 outlets 被激活一次,然后永远不会被销毁,无论在主 outlet 中导航什么路由?
目的是让组件在页面上持续存在(例如,侧边栏),但在初始加载时获得路由的好处 - 例如守卫(解析器)和延迟加载。
要求是命名的 outlet 不应该以任何负面的方式影响 UX,例如通过在 SPA URL 中引入垃圾后缀,例如(outletName:routeName),它们也不应该被意外停用。如果有办法在初始激活后将它们与路由器分离,那将是合适的。
skipLocationChange 选项不能用于此目的。在this example/login(popup:compose) 中,当Contact 和Login 路由顺序导航时,URL 会出现。
【问题讨论】:
-
你可以创建二级网点
-
@pixelbits 是的,就是这样。但是它们应该如何定义呢?我相信这个问题足够具体,不会被认为“太宽泛”,并且可能的质量答案数量有限。我没有提供任何代码,因为在这种情况下它是通用的。在this example from the guide 中可以看到,在导航主要出口时,二级
popup出口仍然存在,但它会用(popup:compose)污染URL。 -
导航时指定skipLocationChange: true
-
@pixelbits 但这仅适用于辅助插座本身的单一导航。见stackblitz.com/edit/angular-kfuscp。单击
Contact链接时,不会更改url,但单击Login时会出现(popup:compose)。覆盖这里stackoverflow.com/questions/43643780/… -
我试了一下,希望组件激活后可以移动到另一个容器中(见this stackblitz)。起初它看起来好像可以工作,但事实并非如此:绑定在此过程中丢失了。一旦issue 20824 中请求的功能到位,这可能是您的解决方案。
标签: angular angular2-routing angular4-router