【发布时间】:2018-08-03 20:48:06
【问题描述】:
我试图弄清楚 Angular 如何使用 getById 服务。 我从一开始就公开了一个 Rest Api 服务,它返回一个布尔值并检查一个项目是否在我最喜欢的 List 中:它获取一个元素的 id 作为参数。 在我的前端,我使用 baseApi 服务进行基本 Crud 操作,并为每个请求使用解析器: 所以我需要做的是如何将我的方法中的id传递给解析器,以及如何定义链接结构(URL)。
这是我的代码以便更好地理解:
- 我在 baseService 中的实际 getById:
getById(link, id:number){
this.header=this.createHeader();
return this.http.get(this.apiurl+link+id,this.header).map(this.extractData);
}
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Item> {
return this.service.getById(item/isFavorite/1');
}
- 打字稿文件中获取我需要将其 id 发送到解析器的项目的方法:
checkItem(item : Item){
this.checkfav=this.route.snapshot.data.isfav;
/**
* checkfav is a bool that should m rest api defined in resolver return
*/
}
【问题讨论】:
-
“解析器”,如您所说,是静态数据。如果您想在路线之间共享数据,则必须使用共享服务。
-
“解析器”也是一种在将数据加载到组件之前收集数据的服务,它们被调用,所以我没有发明它们。在使用解析器之前,我使用服务来处理数据,但后来我不得不处理同步问题,这就是我使用解析器的原因。
-
我的错,我误读了您的代码和文档!
-
过世了 :))
-
但是你应该考虑使用订阅来获取你的数据,快照是静态的(快照的定义)