如何使用角度路径解析器从api解析数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用角度路径解析器从api解析数据相关的知识,希望对你有一定的参考价值。

我试图使用角度路由解析器在显示之前加载端点,但我找不到办法解决它如何在我的解析器中传递我的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']);
  }
}
另一答案

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

 {
    path: 'hn/:id',
    component: HnDetailsComponent,
    resolve: {
      response: HnResolver
    },
}

你的解析器应该喜欢这个

@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']);
  }
}

注意:假设您的路线类似于qazxsw点,其中4是您想要查看详细信息的hn的ID

在HnDetailsComponent中,您可以访问已解决的hn

http://localhost:4200/hn/4

我希望这有助于你解决麻烦。

以上是关于如何使用角度路径解析器从api解析数据的主要内容,如果未能解决你的问题,请参考以下文章

如何让 SAX 解析器从 xml 声明中确定编码?

如何在 android 中使用 DOM 或 SAX 解析器从 XML 读取子节点

node path api

在 JAVA 中使用 SAX 解析器从 XML 文件中提取文本节点

SAX 解析器从 endelement 获取属性

ruby 使用AnyStyle解析器从剪贴板解析引用,并将相应的bibtex记录返回到剪贴板