[問題]angular 4 route resolve裡無法獲得Url param

使用了 url article/:id:
以下程式碼
export class ArticleResolver implements Resolve{
id:any
constructor(private http:Http,private route:ActivatedRoute ){

}

resolve():Observable<any>{
 console.log(this.route.snapshot.params.id)
    return this.http.get(`${Website}api/v1/article/1`)
    .map(res=>{
        console.log(res.json())
        return res.json()
    })
} 

但是這個this.route.snapshot.params.id卻是undefine
ps:我用forchild,lazyloading module

請使用 ActivatedRouteSnapshot

import { ActivatedRouteSnapshot  } from '@angular/router'

resolve(route: ActivatedRouteSnapshot ){
  // your code here
}

https://angular.io/api/router/ActivatedRouteSnapshot

1個讚

謝謝大大的回覆,ActivatedRouteSnapshot 也使用過,不過他會顯示no provider for ActivatedRouteSnapshot!,在module加provider會error
最後只好選擇在component使用相同方式獲得param在傳給service

我將範例程式放在這邊,你參考一下

1個讚

好酷!居然有線上visual code。

看寫法都差不多,明天來試試
不知跟用lazy module有沒有關係,
我是在articlemodule 的resolve抓articlemodule route裡的id