【问题标题】:Have more than one active module in Angular 2在 Angular 2 中有多个活动模块
【发布时间】:2017-09-23 18:34:22
【问题描述】:

Angular 2 final 已经发布,我一直在玩最终路由器版本。

可以在此处找到路由器的一个很好的示例:http://plnkr.co/edit/mXSjnUtN7CM6ZqtOicE2?p=preview

我想知道是否有任何机制可以在将新模块加载到顶部时保持当前模块在 DOM 中呈现(但隐藏)?这里的用例可能是用户可能正在使用管理员类型的模块并意识到他们需要创建一些资产(可能是用户),因此跳转到用户模块进行创建;在跳回到他们在管理模块中的位置之前。

在这种情况下,用户可能处于管理模块的某个深层链接部分,如果他们失去正在做的事情,那将是一种非常奇怪的行为。

这可能吗?从我目前所做的一切来看,我已经看到<router-outlet> 标签中显示的模块完全从 DOM 中转储了。

谢谢!

【问题讨论】:

    标签: angular typescript dom angular2-routing


    【解决方案1】:

    目前路由器添加的组件在路由改变时会被丢弃。 This is planned to be made configurable eventually

    如果您将数据(模型)保存在共享服务中(丢弃)而不是组件本身,则用户在导航回之前的路线时会返回原始视图。 p>

    服务需要在未被路由器移除的组件上提供。 @NgModule() 中未延迟加载的根组件或提供程序将起作用。

    【讨论】:

    • 将数据缓存在服务中只是解决此类问题的部分方法......如果用户处于深度链接区域,或者有一些复杂的配置,那不能真正被缓存在服务中。您是否有任何文档链接表明这是计划可配置的?我想看看:)
    • github.com/angular/angular/issues/7757#issuecomment-236737846 我无法想象为什么服务不能保存对组件能够保存的某些数据的引用。
    • 我更多地考虑在 NgModule 之间切换,而不仅仅是在组件之间跳转。这个想法是我可以有一个模块->组件->组件->组件场景,用户必须输入一些数据,然后跳到另一个模块区域。谢谢你的链接
    • NgModules 没有太多意义,除了在延迟加载时作为一个单元加载,因此我无法在这种情况下使用 NgModules。它始终是路由器在导航时添加/删除的组件。
    • 我将它们用作应用程序的功能区域,允许我在用户无权时延迟加载应用程序的某些部分/限制对该区域的访问。我实际上曾认为使用这样的模块将是大型应用程序的典型方法......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 2014-04-27
    • 1970-01-01
    • 2017-02-20
    • 2019-12-11
    • 2017-11-11
    • 2017-01-05
    相关资源
    最近更新 更多