我的应用程序上有一些流程,在某个时刻,我将页面推送到堆栈,在该页面上,我调用一个加载对话框来进行一些数据加载。问题是加载对话框没有显示出来。然后我意识到,当我回到上一页时,装载就在那里,在我的页面下面出现了。如果在我的导航流程中,而不是nav.push
我使用nav.setRoot
,它可以正常工作,所以我认为这是导航堆栈的一些小问题。我真的想使用nav.push
因为它对我的应用更有意义。
有什么想法吗?
编辑:
调用页面的函数:
onViewUnidade(unidade){
if (unidade.tipo == "Unidade Consumidora"){
this.nav.push(UnidadeConsumidoraPage, unidade);
}else if (unidade.tipo == "Usina"){
this.nav.push(UsinaPage, unidade);
}
}
我的onInit方法:
ngOnInit(){
console.log("show loading");
this.loading = this.loadingCtrl.create({
content: "some message"
});
this.loading.present();
}
我的console.log执行,我甚至没有解雇它,所以我可以正确地看到它。正确导入和加载Loading和LoadingController。
编辑2:
我注意到只有当重定向到我的最后一页加载的页面是模态时才会出现这个问题。如果我为常规页面更改它,它可以正常工作。此外,尝试在导航到新页面之前解除模态和popToRoot
但仍然遇到同样的问题。有什么想法吗?
答案 0 :(得分:1)
得到了我对文档的回答: 当您想要从叠加组件(弹出窗口,模态,警报等)导航时,我们必须使用getRootNav()方法在我们的应用程序中获取根NavController的引用,而不是注入导航控制器:
this.appCtrl.getRootNav().push(SecondPage);
希望这有助于谁遇到同样的问题!
答案 1 :(得分:0)
看看LoadingOptions
export interface LoadingOptions {
spinner?: string;
content?: string;
cssClass?: string;
showBackdrop?: boolean;
dismissOnPageChange?: boolean;
delay?: number;
duration?: number;
}
您可以设置dismissOnPageChange
(为true)。确保您关闭加载对话框或设置duration
。