变更检测; application.tick被递归调用?为什么

时间:2019-01-24 13:23:01

标签: angular angular6 angular7 angular-changedetection ngzone

i有一个父组件A,子组件b和服务c,用于成功或失败地加载加载弹出服务。

在B子组件中有一个名为newchanges的按钮,b组件发出值并在组件中调用该函数,并且该服务调用中有一个服务调用。

在连续单击子组件b newchanges按钮的同时,我遇到了error.application.tick递归调用。

如果我不使用application.tick,则正在加载的diolog没有关闭,因此我已在服务中的应用程序ref中使用过。它是所有模块的全球服务。

任何人都可以解决:

这是在服务调用成功和关闭加载器失败时使用的加载器服务。

exitLoader = ():void => {

        setTimeout(() => {
          console.log('tick1');
          this.matLoader.close();

          this.applicationRef.tick();
        }, 50);

}

我需要关闭作为另一项服务成功和失败中使用的服务的加载程序,当我不使用应用程序引用时,它没有关闭,因此在单击后连续使用此服务,我一直在使用该服务,提到的错误。

我尝试使用zone,加载器未关闭的另一个选项:

 // setTimeout(() => {
      //   this.zone.runOutsideAngular(() => {
      //     this.matLoader.close();
      //   });
      // }, 100);

0 个答案:

没有答案