--- title: 11. Navigation and Routing Basics tags: Angular Getting Started image: --- # 11. Navigation and Routing Basics :::success **Steps** 1. Import RouterModule and Add Path Route 2. Add routerLink in the place where you need 3. Add <router-outlet></router-outlet> in app.component.html 4. When using routerLink, selector-flag is unnecessary ::: <br/> [toc] <br/> ## 1. Import RouterModule and Add Path Route * Import RouterModule ``` import { RouterModule } from '@angular/router'; ``` <br/> * Add Path Route ``` imports: [ BrowserModule, RouterModule.forRoot([ {path: 'date', component: DateComponent}, {path: 'about', component: AboutComponent}, {path: 'welcome', component: WelcomeComponent}, {path: '', redirectTo: 'welcome', pathMatch: 'full'}, {path: '**', component: PageNotFoundComponent} ]) ], ``` <br/> * Overall ```app.module.ts //app.module.ts import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; //import Component import { AppComponent } from './app.component'; import { NavigateComponent } from './navigate/navigate.component'; import { DateComponent } from './date/date.component'; import { AboutComponent } from './about/about.component'; import { PageNotFoundComponent } from './page-not-found/page-not-found.component'; import { WelcomeComponent } from './welcome/welcome.component'; //import RouterModule import { RouterModule } from '@angular/router'; @NgModule({ declarations: [ AppComponent, NavigateComponent, ], imports: [ BrowserModule, RouterModule.forRoot([ {path: 'date', component: DateComponent}, {path: 'about', component: AboutComponent}, {path: 'welcome', component: WelcomeComponent}, {path: '', redirectTo: 'welcome', pathMatch: 'full'}, {path: '**', component: PageNotFoundComponent} ]) ], providers: [], bootstrap: [AppComponent] }) export class AppModule { } ``` <br/> ## 2. Add routerLink in the place where you need ```navigate.component.html //navigate.component.html <ul class="nav-list"> <li class="list-item"><a routerLink="" class="link">Home</a></li> <li class="list-item"><a routerLink="/date" class="link">Date</a></li> <li class="list-item"><a routerLink="/about" class="link">About</a></li> </ul> ``` <br/> ## 3. Add <router-outlet></router-outlet> ```app.component.html //app.component.html <h1>My-first-app is running</h1> <router-outlet></router-outlet> ``` -> to tell the router where to render the components <br/> ## 4. When using routerLink, selector-flag is unnecessary ```welcome.component.ts //welcome.component.ts import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-welcome' //unnecessary templateUrl: './welcome.component.html', styleUrls: ['./welcome.component.scss'] }) export class WelcomeComponent implements OnInit { constructor() { } ngOnInit(): void { } } ``` <br/> **After update** ```welcome.component.ts @Component({ templateUrl: './welcome.component.html', styleUrls: ['./welcome.component.scss'] }) ``` <br/> -------------------------------------------------------------------------- **Order matters** * Order will affect router's display (please follow the sequence from top to bottom) **Default Route** ``` {path: '', redirectTo: 'welcome', pathMatch: 'full'}, {path: '**', component: PageNotFoundComponent} ``` * path: '' -> welcome page (default value) * path: '**' -> the page is not found (for error page route) -------------------------------------------------------------------------- > ng g c products/product-detail --flat * flat means no file