【问题标题】:How to yield a sub-template(component) in a layout file in angular 2?如何在角度 2 的布局文件中生成子模板(组件)?
【发布时间】:2017-04-19 15:22:25
【问题描述】:

我正在尝试将一段 html 生成到 Angular 2 中特定路线的导航栏中。所以这不是正文组件的一部分,而是页面标题中布局的一部分。我如何在角度 2 中做到这一点? 这就是我在 AngularJS 中所做的。

//header.html .. which is a partial within the layout

<div class="nav-wrapper">
      <ul class="nav navbar-nav" ui-view="navbar_options">
        <li>

           <a href="" trigger-resize="" ng-click="app.layout.isCollapsed = !app.layout.isCollapsed" class="hidden-xs"> <em class="fa fa-navicon"></em>
           </a>

           <a href="" ng-click="app.asideToggled = !app.asideToggled" class="visible-xs sidebar-toggle"> <em class="fa fa-navicon"></em>
           </a>
        </li>

     </ul>
</div>





//routes.config.js

.state('app.xyz', {

          url: '/jobs/:jobID',
          views:{
          '': {title: 'abc',
          templateUrl: helper.basepath('path/xyz.html'),
          controller: 'myController',
          },
          'navbar_options': {title: 'my_page',
          templateUrl: helper.basepath('path/xyz_navbar.html'),

          controller: 'myController'}

          }
      })

我想在 Angular 2 中实现同样的目标

【问题讨论】:

    标签: javascript angular angular2-routing


    【解决方案1】:

    如果我对您的理解正确,您正在尝试根据某个路线在导航栏中显示一个组件,但页面的主体也会随着路线的变化而更新。如果我是你,我会使用“次要路线”。我相信它们也被称为“命名路线”

    通常,您的网页应该是这样的:

    <div class="app-content">
        <router-outlet></router-outlet>
    </div>
    

    如果您只更新网页的一部分,这非常有用。如果要更新多个部分,则需要提供多个路由并对其进行命名。它们看起来像这样:

    <router-outlet name="myroute"></router-outlet>
    

    我猜你会想要在导航栏中使用这些命名路由器之一,然后你必须创建一个链接,将数据放置在命名路由中......该链接看起来像这样:

    <button md-button [routerLink]="['/mainroute', {outlets: {'myroute': ['routnamehere']}}]">
        Open Two Routes
    </button>
    

    【讨论】:

    • 非常接近我想要的。无论如何我可以通过路径直接访问它吗?即,当我转到路由“/mymainroute”时,命名的 routeoutlet 作为页面加载本身的一部分加载,而不是使用带有附加参数的按钮来检索我的命名插座。
    • 我不知道有什么方法可以加载两个出口而不在 routerLink 中指定它们。
    • 我会说使用嵌套路由,因为一个链接会加载一个路由,然后是一个子路由,但看起来这不起作用,因为嵌套路由会在另一个模板中加载一个模板,看起来你想要网页的两个不同区域中的模板。
    • 是的-第二个问题是我想要显示的路由器插座不在同一个组件(父/子)级别。因此,我要添加的导航栏是布局文件的一部分,而 html 文件的其余部分位于进一步加载子组件的模块中 - 因此这成为另一个路由器出口(应用程序级别)中的嵌套组件和因此,当我尝试从我的模块中产生链接时,它不理解我的布局级命名路由器出口。
    • 如果我在当前模块中添加命名的路由器插座,它会正确理解并生成组件,但这不是我想要的。
    猜你喜欢
    • 2017-04-06
    • 2017-05-27
    • 2019-05-27
    • 1970-01-01
    • 2020-02-13
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多