我正在开展一个 Ionic 2 项目,面临着下面的问题。当用户从应用程序注销时,使用 navController 重定向到登录页面,如下所述。
this.navController.setRoot(LoginPage);
用户下次登录应用程序时会重定向到广告资源页面。
this.navController.setRoot(InventoryPage);
当用户再次登录时,问题是 InventoryPage 组件 初始化两次 。我正在调试时发现Progress bar组件也用它初始化(我在InventoryPage.html中使用了一个进度条组件)
<progress-bar [value]="progress | async"></progress-bar>
在此进度条组件中我正在使用 ngZone.run()函数来检测进度值更改。
@Input()
set value(progress: number) {
this.ngZone.run(() => {
if (progress < this.defaultValue) {
this.currentProgress = this.defaultValue;
this.updateProgress(true);
} else if (progress > this.defaultValue && progress < this.maxProgress) {
this.currentProgress = progress;
this.updateProgress(true);
} else if (progress === this.maxProgress) {
this.currentProgress = this.maxProgress;
this.hideProgressbar();
}
});
}
private updateProgress(visible: boolean) : void {
this.isVisible = visible;
this.changeDetectorRef.markForCheck();
}
private hideProgressbar() {
setTimeout(() => {
this.updateProgress(false);
}, 2500)
}
如果注释掉此ngZone.run()函数,则不会发生此问题。谁有人面对这个问题?