angular - 如何使用 Angular 路由解析器解析来自 api 的数据

标签 angular angular-ui-router

我正在尝试使用 Angular 路由解析器在端点显示之前加载它,但我找不到解决方法 如何将 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']);
  }
}

关于angular - 如何使用 Angular 路由解析器解析来自 api 的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48909365/

相关文章:

angular - ng 服务命令不起作用 Angular 5

javascript - 如何在运行时配置 MsAdalAngular6Module?

javascript - 如何仅在 PROD 环境中隐藏元素?

Angular 12 child 访问模板占位符

angularjs - ui-router : open state in new tab with target ="_blank", 参数丢失

javascript - Angular 模板解析错误 : The pipe could not be found

angular - nativescript 中的多行文本框

javascript - 如何使用 ui-router 1.0 防止 AngularJS 1.6 中的状态更改?

angularjs - angularjs ui-router中的表单提交

javascript - AngularJS 路由和 anchor 哈希