import {Router, ROUTER_DIRECTIVES} from '@angular/router';
@Component({ selector: 'product', directives: [ROUTER_DIRECTIVES], template: ` <div class="product"> <h1>Product Detail for: {{ productID }}</h1>
<router-outlet></router-outlet> <p><a [routerLink]="['seller', 'abc']">Seller Info</a></p> </div> `, styles: ['.product {background: cyan}']})export class ProductDetailComponent {
...}
import { provideRouter, RouterConfig } from '@angular/router';
export const ProductRoutes: RouterConfig = [ { path: 'product/:id', component: ProductDetailComponent, children: [ { path: 'seller/:id', component: SellerInfoComponent }, { path: '' , component: ProductDescriptionComponent } ]} ];
export const PRODUCT_ROUTER_PROVIDERS = [ provideRouter(ProductRoutes)];import {bootstrap} from '@angular/platform-browser-dynamic';import {Component} from '@angular/core';import {LocationStrategy, HashLocationStrategy} from '@angular/common';import {ROUTER_DIRECTIVES} from '@angular/router';import {APP_ROUTER_PROVIDERS} from './app_routes';
@Component({
selector: 'basic-routing', directives: [ROUTER_DIRECTIVES], template: ` <a [routerLink]="['/']">Home</a> <a [routerLink]="['/product', '1234']">Product Details</a> <router-outlet></router-outlet> `})
class RootComponent{}
bootstrap(RootComponent, [ APP_ROUTER_PROVIDERS, {provide: LocationStrategy, useClass: HashLocationStrategy} ]);import { provideRouter, RouterConfig } from '@angular/router';import { ProductRoutes } from './product_routes';
export const appRoutes: RouterConfig = [ { path: '' , component: HomeComponent }, ...ProductRoutes];
export const APP_ROUTER_PROVIDERS = [ provideRouter(appRoutes)];import { provideRouter, RouterConfig } from '@angular/router';import { ProductDetailComponent } from './components/product';import { HomeComponent } from './components/home';
export const appRoutes: RouterConfig = [ { path: '' , component: HomeComponent }, { path: 'product/:id', component: ProductDetailComponent }];
export const APP_ROUTER_PROVIDERS = [ provideRouter(appRoutes)];const navRouteChildren: Route [] = [ { path: 'seller/:id', component: SellerInfoComponent }, { path: '' , component: ProductDescriptionComponent }];
@Component({ selector: 'product',...})export class ProductDetailComponent { productID: string; private sub: any;
... ngOnInit() { this.modifyRoutes(appRoutes); this.sub = this.route.params.subscribe(params => { this.productID = params['id']; }); this.router.navigate([]); }
ngOnDestroy() { this.sub.unsubscribe(); }
modifyRoutes(routes: RouterConfig) { routes.forEach(routeToCheck => { this.addChildrenIfMatch('product/:id', routeToCheck); }); }
addChildrenIfMatch(targetPath: string, targetRoute: Route) { if(targetRoute.path === targetPath) { targetRoute.children = navRouteChildren; } }
}