我正在尝试使用角度路由解析器在显示之前加载终结点,但找不到解决方法
如何在解析器中传递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']);
  }
}

10-06 02:59