# Week2

# Angular Route 帶資料的方式

這邊介紹兩種方式來使用路由傳送資料

# state

此資料不會在路由上顯示

在 app 裡面使用 navigate 後面帶 state 帶欲傳送的變數

app

export class AppComponent {
  constructor(private router: Router) {}

  changePage(): void {
    this.router.navigate(['/home'], { state: { products: this.productsList }});
  }
}

在 home 這需要在 constructor 建構式的地方接資料

home

export class HomeComponent {
  constructor(private router: Router) {
    this.productsList = this.router.getCurrentNavigation()?.extras.state?.products;
  }
}

# queryParams

此資料會在路由上顯示 XXXX?products=abc

在 app 裡面使用 navigate 後面帶 state 帶欲傳送的變數

app

export class AppComponent {
  constructor(private router: Router) {}

  changePage(): void {
    this.router.navigate(['/home'], { queryParams: { products: 'abc' }});
  }
}

使用 ActivatedRoute 的 snapshot 功能來拿取資料

home

export class HomeComponent implements OnInit {
  constructor(private route: ActivatedRoute) {}
  
  ngOnInit(): void {
    this.products = this.route.snapshot.queryParams.products
  }
}