可以通过使用RxJS库中的“zone-agnostic”操作符来解决此问题。这些操作符可以帮助我们将Observables设置为在Zone之外运行,以便我们可以在其中进行导航而不会被限制。
示例代码:
import { fromEvent } from 'rxjs'; import { switchMap } from 'rxjs/operators'; import { NgZone } from '@angular/core';
constructor(private ngZone: NgZone) {}
this.ngZone.runOutsideAngular(() => { fromEvent(window, 'click') .pipe(switchMap(() => this.router.navigateByUrl('/home'))) .subscribe(); });