【问题标题】:Proper way to resolve the app component in Angular 2在Angular 2中解析应用程序组件的正确方法
【发布时间】:2017-05-28 07:17:00
【问题描述】:

我正在开发一个基于域提取其站点副本的应用程序。我有一个例外的应用程序。我在 app.component 模板中定义应用程序的导航栏和页脚,如下所示。

    <navigation></navigation>
    <router-outlet></router-outlet> 
    <appFooter></appFooter>

在 appFooter 和导航的模板内部,我正在使用安全导航运算符解析数据,如下所示

<p>{{copyService.copy?.somevalue}}</p>

我真正想做的是使用解析器和ActivatedRoute的数据属性来做这样的事情

var copy = this.route.snapshot.data['copy'];

在应用程序组件中。然后通过输入变量将数据传递到页脚和导航。

不幸的是,当我像下面这样重定向到我的主组件时,我不确定如何解决应用程序组件的问题

{ path: '', redirectTo: '/home', pathMatch: 'full'},

如果有人对完成此任务的最佳方式有任何想法,我将不胜感激。先感谢您。

请注意,我提供的代码只是示例代码,而不是来自我的实际代码库,我只是想说明我当前遇到的问题。

【问题讨论】:

    标签: angular router resolver


    【解决方案1】:

    我能够处理这个问题的方法是在 app.component 之上添加另一个组件层。

    { path: '', redirectTo: '/home', pathMatch: 'full' },
    { path: '', 
      component: BaseComponent, 
      resolve: { 
        yourContent: contentResolver 
      }, 
      children: [ 
      { path: 'home'... }
      ]
    }
    

    然后移动这些:

    <navigation></navigation>
    <router-outlet></router-outlet> 
    <appFooter></appFooter>
    

    从您的app.html 进入您的base.html

    您在此 BaseComponent 中定义的解析将可用于(以及所有子路由)内的所有组件。

    希望这能让您更接近您的目标。

    【讨论】:

    • 谢谢你帮了我。
    • 你会如何处理多个模块?
    猜你喜欢
    • 2016-11-15
    • 2017-01-21
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多