文章内容

2019/8/2 16:23:50,作 者: 黄兵

Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?

最近在页面跳转的时候,出现如下提示:

Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?


出现问题的原因:

在Angular之外触发导航,需要调用ngZone.run()重新进入Angular区域。


解决方案:

修改源代码如下:

import {Component, NgZone, OnInit} from '@angular/core';

constructor(private ngZone: NgZone, private router: Router) {}

 onClientAuthorization: (data) => {
        console.log('onClientAuthorization - you should probably inform your server about completed transaction at this point', data);
        this.showSuccess = true;
        this.cartSaveService.order_succeed(data, this.selectValueId).subscribe((res: any) => {
          if (res === 'success') {
            setTimeout(() => {
              this.ngZone.run(() => this.router.navigateByUrl('/cart/pay_result')).then();
            }, 10);
          }
        });
      },


参考资料:

1、"Navigation triggered outside Angular zone" warning in unit tests #25837

2、NgZone


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?

分享到:

发表评论

评论列表