Angular 如何使用角度路由解析器解析api中的数据

Angular 如何使用角度路由解析器解析api中的数据,angular,angular-ui-router,Angular,Angular Ui Router,我试图使用角度路由解析器在端点显示之前加载它,但我找不到方法 如何将API的url作为参数传递到解析器中? 出于某种独特的原因,我需要传入一个参数,以便无法在服务中传递api 这是我的服务 @Injectable() export class HnService { constructor(private http: HttpClient) {} getTopPosts(endpoint) { return this.http.get(endpoint); } } 这

我试图使用角度路由解析器在端点显示之前加载它,但我找不到方法 如何将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(?);
  }
}
@Injectable()
导出类解析程序实现解析{
构造函数(私有hnService:hnService){}
解决(){
返回此.hnService.getts(?);
}
}

首先,你的路线应该是这样的

 {
    path: 'hn/:id',
    component: HnDetailsComponent,
    resolve: {
      response: HnResolver
    },
}
 {
    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['id']);
  }
}

我希望这能帮助您解决问题。

如果您只想在解析器中传递数据并访问这些数据,您可以在定义路径时使用data属性


首先,你的路线应该是这样的

 {
    path: 'hn/:id',
    component: HnDetailsComponent,
    resolve: {
      response: HnResolver
    },
}
 {
    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']);
  }
}
@Injectable()
导出类解析程序实现解析{
构造函数(专用hnService:hnService){
}
解析(路由:ActivatedRouteSnapshot,
状态:RouterStateSnapshot):可观察{
返回此.hnService.getAtts(route.data['apirl']);
}
}

我不是在传递ID,我是在传递API URL。请检查新答案,Arthur,如果你解决了问题,请告诉我trouble@arthur-decker看到这张了吗?虽然我没有用快照,但你的逻辑给了我更多的想法。我已经找了差不多一天了。我正在引用ActivatedRoute数据并得到一个空值。