Article

Github

Auxiliary Routes is is little bit hard to understand.

Here is demo, link

You can see each category has an own 'View detials' button, and there is a side menu on the right side.

What we want is when we click the "View details" button, it will nav to category detail component along with the id (in this case is the title ex: 'development').

Also we want the side menu also get the information what button have been clicked.

Vice Versa....

Once we got those id, then we can do the rest application logic, which won't be included here... but the importantce is to get the id for both category detail component and sidemenu component.

The router config:

export const routerConfig: Routes = [
{
path: 'home',
component: HomeComponent
},
{
path: 'courses',
component: CoursesComponent,
children: [
{
path: '',
component: CourseCardsComponent
},
{
path: ':id',
component: CoursesCategoryComponent
},
{
path: '',
outlet: 'sidemenu',
component: SideMenuComponent
},
{
path: ':id',
outlet: 'sidemenu',
component: SideMenuComponent
}
]
},
{
path: '',
redirectTo: '/home',
pathMatch: 'full'
},
{
path: '**',
redirectTo: '/home',
pathMatch: 'full'
}
];

Look at 'courses' router, we have two empty paths, it means for the empty path, we have tow componet to display,  one is 'CourseCardsComponent' and 'SidemenuComponent'. 'CourseCardsComponent' will be displayed in primay outlet, and 'SidemenuComponent' will be display in auxiliary router outlet.

<main>
<div class="container">
<div class="row row-offcanvas row-offcanvas-right">
<div class="col-xs-12 col-sm-9">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a routerLink="/home">Home</a></li>
<li class="breadcrumb-item active">Courses</li>
</ol>
<div class="jumbotron">
<h1>Course Categories!</h1>
<p>This is a list of course categories, click on each to see a list of courses for a given
category.</p>
</div>
<router-outlet></router-outlet>
</div>
<router-outlet name="sidemenu"></router-outlet>
</div>
</div>
</main>

So now when we click the button, how to make url like this:

/courses/(development//sidemenu:development)

and what does it means?

This url means:

  • the courses url segment is active

  • inside it the primary route is set to /courses/development

  • the auxiliary child route 'development' is active for the outlet sidemenu

So there are two thing going on, for the primay outlet, we are in /courses/development state, and for sidemenu, we are also in /development state.

import { Component, OnInit } from '@angular/core';
import {Router, ActivatedRoute} from "@angular/router"; @Component({
selector: 'app-course-cards',
templateUrl: './course-cards.component.html',
styleUrls: ['./course-cards.component.css']
})
export class CourseCardsComponent { constructor(private router: Router, private route: ActivatedRoute) {
} navigate(path) {
this.router.navigate([{outlets: {primary: path, sidemenu:path}}], {relativeTo: this.route});
}
}
    <div class="col-xs-6 col-lg-4">
<h2>Development</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn btn-secondary" (click)="navigate('development')" role="button">View details »</a></p>
</div>

So we are using 'navigate' method or Router, set primary and auxiliary router's path to 'development'.

How to get the path information in sidemenu and category detail?

  id: string;
constructor(route: ActivatedRoute, private router: Router) {
route.params.subscribe(
(params) => this.id = params['id']
)
}

Until now, when we click the "View details" button, we can finish the logic, then let's see how it is done from sidemenu.

<div class="col-xs-6 col-sm-3 sidebar-offcanvas" id="sidebar">
<h2>{{id}}</h2>
<div class="list-group">
<a (click)="nav($event, 'development')" class="list-group-item">Development</a>
<a href="#" (click)="nav($event, 'it-software')" class="list-group-item">IT &
Software</a>
<a href="#" (click)="nav($event, 'office')" class="list-group-item">Office
Productivity</a>
<a href="#" (click)="nav($event, 'photo')" class="list-group-item">Photography</a>
<a href="#" (click)="nav($event, 'health')" class="list-group-item">Health and
Fitness</a>
<a href="#" (click)="nav($event, 'music')" class="list-group-item">Music</a>
</div>
</div>
  nav(e, path){
e.preventDefault();
this.router.navigateByUrl(`/courses/(${path}//sidemenu:${path})`);
}

Pretty simple and similar, just using navigateByUrl method, cause here we want to use absoulte router.

[Angular2 Router] Auxiliary Routes bit by bit的更多相关文章

  1. [Angular2 Router] Resolving route data in Angular 2

    From Article: RESOLVING ROUTE DATA IN ANGULAR 2 Github If you know Anuglar UI router, you must know ...

  2. [Angular2 Router] Lazy Load Angular 2 Modules with the Router

    Angular 2 lazy loading is a core feature of Angular 2. Lazy loading allows your application to start ...

  3. 在addroutes后,$router.options.routes没有更新的问题(手摸手,带你用vue撸后台 读后感)

    参照<着手摸手,带你用vue撸后台>一文,本人做了前端的权限判断 https://segmentfault.com/a/1190000009275424 首先就是在addroutes后,$ ...

  4. [Angular2 Router] Configure Auxiliary Routes in the Angular 2 Router - What is the Difference Towards a Primary Route?

    In this tutorial we are going to learn how we can can configure redirects in the angular 2 router co ...

  5. [Angular2 Router] Use Params from Angular 2 Routes Inside of Components

    Angular 2’s ActivatedRoute allows you to get the details of the current route into your components. ...

  6. Angular2 Router路由相关

    路由设置 Angular中路由的配置应该按照先具体路由到通用路由的设置,因为Angular使用先匹配者优先的原则. 示例: 路由设置如下: export const reportRoute: Rout ...

  7. [Angular2 Router] CanActivate Route Guard - An Example of An Asynchronous Route Guard

    In this tutorial we are going to learn how we can to configure an can activate route guard in the An ...

  8. [Angular2 Router] CanDeactivate Route Guard - How To Confirm If The User Wants To Exit A Route

    In this tutorial we are going to learn how we can to configure an exit guard in the Angular 2 Router ...

  9. [Angular2 Router] Optional Route Query Parameters - The queryParams Directive and the Query Parameters Observable

    In this tutorial we are going to learn how to use the Angular 2 router to pass optional query parame ...

随机推荐

  1. javafx checkbox

    public class EffectTest extends Application { public static void main(String[] args) { launch(args); ...

  2. WebService 获取客户端 IP 和 MAC 等信息

    IP地址 public string getClientIP() { string result = HttpContext.Current.Request.ServerVariables[" ...

  3. CMDB学习之四 ——DEBUG模式

    定义一个debug,进行解析调试,到测试文件 配置文件,配置debug模式,定义环境变量, #!/usr/bin/env python # -*- coding:utf-8 -*- import os ...

  4. Vue的学习--环境配置

    1.  下载vue.min.js或者使用CDN 2.  安装Vue-cli环境 我在window7 32位下使用命令行cmd进行的操作 安装之前应该使用node -v和npm -v检查一下node和n ...

  5. ASP.NET MVC使用Ninject

    Ninject是一个快如闪电的,轻量级的.....依赖注入框架,呃呃呃,貌似很少用到,Ninject就是一个DI容器,作用是对ASP.NET MVC程序中的组件进行解耦 ,说到解耦其实也有其他的方式可 ...

  6. 【2017 Multi-University Training Contest - Team 9】FFF at Valentine

    [链接]http://acm.hdu.edu.cn/showproblem.php?pid=6165 [题意] 一张有向图,n个点,m条边,保证没有重边和自环.询问任意两个点能否满足任何一方能够到达另 ...

  7. ViewPager+Fragmrnt最简单结合方法

    Fragment和ViewPager 本博文系本菜鸟第一次博文展示,有错误之处请虽然提出 FragmentPagerAdapter 谷歌官方提供了这么一个adapter(FragmentPagerAd ...

  8. home-界面返回上一级功能

    1,这个主要是用在actionbar上home键,直接上代码 import android.view.MenuItem; /* Vanzo:zhangshuli on: Mon, 23 Mar 201 ...

  9. Java exception handling best practices--转载

    原文地址:http://howtodoinjava.com/2013/04/04/java-exception-handling-best-practices/ This post is anothe ...

  10. Android Studio com.android.dex.DexException: Multiple dex files define(重复引用包)

    如果你用Android Studio开发,并且要用其他项目作为library,这个问题是很容易出现的.出现这个问题的原因是包的重复引用,意思就是在你自己的项目中引用了某个包,而被你作为library的 ...