如何在不硬刷新的情况下重定向到另一个路由?
这是我第一次创建 ionic/angular 应用程序。这是一份调查问卷,当用户回答完一组问题后,他们将被重定向到结果页面。
我的重定向代码如下:
import { Router } from '@angular/router'
private router: Router
this.router.navigate(['/result/' + this.current_survey.id]);
我只有在强制刷新后才能看到我的结果,但我不确定原因。
导致跳转的代码位于我的调查组件中,我将其重定向到结果组件。在结果组件的ngOnInit()函数中,我从Web数据库中检索保存的数据,但此时数据不存在。
调查组件中的代码块如下:
if (this.current_survey.finished) {
this.calculateResult().then((result) => {
this.current_survey.result = result;
this.storageService.update(this.current_survey, this.helperService.SURVEY_STORAGE).then(
(value) => {
this.storageService.removeKey(this.helperService.LAST_NOT_FINISHED_SURVEY);
this.router.navigate(['result', this.current_survey.id]);
});
});
}
我的结果组件中的ngOnInit如下:
// Check if survey is a new survey or should be load from previos surveys
let survey_id;
// Get id from route, if any id was given in url
this.route.paramMap.subscribe((params: ParamMap) => {
survey_id = params.get('id');
});
if (survey_id !== null) {
survey_id = parseInt(survey_id, 10);
}
this.showResults(survey_id);
在我的结果组件中,ngOnInit 中调用的方法如下所示:
const key = this.helperService.SURVEY_STORAGE + '_' + survey_id;
// Preload all neccessary data
this.storageService.getDataByName(key).then((data) => {
if (data.length === 0) {
this.alertService.show('Error', '', 'Result not found :(');
} else {
this.survey = data.shift();
}
});
this.route.paramMap.pipe( switchMap(params => this.showResults(params.get('id')) ).subscribe()
这样你就可以确信在调用showResults之前已经获取到了你的路由参数。 - corytak