我正在尝试使用角度路由解析器在显示之前加载终结点,但找不到解决方法
如何在解析器中传递API的URL作为参数?
由于某些独特的原因,我需要传递一个参数,以便无法在服务中传递api。
这是我的服务
@Injectable()
export class HnService {
constructor(private http: HttpClient) {}
getTopPosts(endpoint) {
return this.http.get(endpoint);
}
}
这是我的解析器文件
@Injectable()
export class HnResolver implements Resolve<any> {
constructor(private hnService: HnService) {}
resolve() {
return this.hnService.getTopPosts(?);
}
}
最佳答案
如果只想传递数据并在解析器中访问此数据,则可以在定义路径时使用data属性。
首先你的路线应该是这样的
{
path: 'hn/:id',
component: HnDetailsComponent,
resolve: {
response: HnResolver
},
data:{
apiURL: 'my/api/url'
}
}
在解决
@Injectable()
export class HnResolver implements Resolve<any> {
constructor(private hnService: HnService) {
}
resolve(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<any> {
return this.hnService.getTopPosts(route.data['apiURL']);
}
}