Angular 2组件初始化多次

时间:2017-10-25 09:36:45

标签: angular ionic2

我正在开展一个 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()函数,则不会发生此问题。谁有人面对这个问题?

0 个答案:

没有答案