[Angular 6] Routing

這篇來看看如何使用Roting來切換頁面

透過Routing可以決定所要顯示的Page,Angular裡我們會在app-routing.module.ts設定相關Routing,

下圖是沒設定出現找不到符合Route錯誤訊息

現在我需要幫Home和About設定相關routing

import { HomeComponent } from './home/home.component';
import { AboutComponent } from './about/about.component';

const routes: Routes = [
  {
    path: '',
    component: HomeComponent
  },
  {
    path: 'about',
    component: AboutComponent
  }
];

@NgModule({
  imports: [RouterModule.forRoot(
    routes ,
    { enableTracing: true } // <-- debugging purposes only
  )],
  exports: [RouterModule]
})

修改app.component.html

<ul>
  <li>
    <a [routerLink]="['']">Home</a>
  </li>
  <li>
      <a [routerLink]="['about']">About</a>
  </li>
</ul>

<router-outlet></router-outlet>

這樣我們就完成Home和About頁面的routing

 

使用參數

如果我需要瀏覽About並帶Name參數是否可行呢?一樣透過Routing取得即可,同時我也需要返回Home的操作

{
    path: 'about/:name',
    component: AboutComponent
  }

<li>
      <a [routerLink]="['about/rico']">About</a>
  </li>

About.component.ts修改如下

import { ActivatedRoute } from '@angular/router';
import { Router } from '@angular/router';

export class AboutComponent implements OnInit {
  Name = '';
  constructor(private route: ActivatedRoute, private router: Router) {
    this.route.params.subscribe(res => {
      this.Name = res.name;
      console.log(res.name);
    });
  }

  ngOnInit() {
  }

  backToHome() {
    this.router.navigate(['']);
  }

}

About.component.html修改如下

<p>
  I am <strong style="color: green">{{Name}}</strong> , about works!<br/>
  <a href="" (click)="backToHome()"><strong>Back To Home</strong></a>
</p>

結果

 

參考

Routing & Navigation

Routes

About Router