Angular 如何使用角度路由解析器解析api中的数据
我试图使用角度路由解析器在端点显示之前加载它,但我找不到方法 如何将API的url作为参数传递到解析器中? 出于某种独特的原因,我需要传入一个参数,以便无法在服务中传递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); } } 这
@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数据并得到一个空值。