【发布时间】:2018-12-21 23:28:14
【问题描述】:
我有一个条目列表,当我单击一个列表时,我会进入该项目的更详细视图。现在这个视图通过 http-Request 加载(这比从页面到页面的路由要长一点)。所以假设我有以下代码:
对于目标页面:
projectNumber: string = '';
ngOnInit() {
}
constructor(
private router: Router,
private route: ActivatedRoute,
private logger: LoggerService,
private projectReceiverService: ProjectReceiverService
) {
this.initProjectDataFromProjectNumber(this.route.snapshot.paramMap.get('projectNum'));
}
initProjectDataFromProjectNumber(projectNumber: string) {
let project = this.projectReceiverService.getProjectByNumber(projectNumber);
this.projectNumber = projectNumber; //getProjectNumber => results in error
}
对于服务:
getProjectByNumber(projectNumber: string): Project {
let project: Project;
this.http.get(httpBaseUrl + "/project/getProject/" + projectNumber, httpOptions).subscribe((data) => {
this.logger.info("Received data, processing...");
project = data['projectDto'];
},
(error) => {
this.logger.error("Error when receiving project.");
this.logger.error(error.message);
});;
return project;
}
对于上一页(我单击该项目):
projectClicked(projectNumber: string) {
this.routeTo('projects/' + projectNumber);
}
现在,如果我能在 http 请求完全成功后以某种方式设法路由,那就太好了(因为我可以例如在路由时直接传递项目对象,而且我不会在显示一些数据时遇到困难可能尚未加载到详细页面上)。我怎么能那样做?我曾想过在点击某些内容之前将其加载到前一侧,但是之前加载每个项目的所有详细信息将是一个超载的地狱。
【问题讨论】:
标签: angular httprequest angular-routing angular-http