Angular4路由器事件avarigationEnd停止在Firefox中导航



在组件中,我正在订阅" ngoninit"中的路由器事件'navigationEnd'如下:

public ngOnInit(): void {
this.router.events
  .filter((e: {}) => e instanceof NavigationEnd)
  .subscribe((event: {}) => {           
    this.myFunction();
  });
}

与上述代码一起,我在另一个组件中使用router.navigate([link](如下:

constructor(private router: Router) {}
public navigateToLink = (link: string): void => {
 this.router.navigate([link]);
}

它在Chrome中运行良好,但是,在评论路由器事件订阅代码后,导航根本无法在Firefox中工作,Router Navigation开始在Firefox工作。请指导我的代码中有什么问题。

我不知道为什么它在firefox中不起作用,但是我正在使用navigationEnd使用路由器事件,这就是我的控制方式。

navigation: any;
navigationId: any;
this.routerEvents = _router.events
    .filter((event) => event instanceof NavigationEnd)
    .subscribe((val: Event) => {
        this.navigation = val;
        var currentRoute = this._router.url;
        if (val instanceof NavigationEnd && (this.navigationId === undefined || this.navigationId !== this.navigation.id)) {
            this.navigationId = this.navigation.id;
            //do the thing here
        }
    });

在这里,我正在检查路由器事件是否没有被多次调用,如果我一直访问此组件,Events将事件存储在堆栈中,以便我仅一次调用内部代码。

也退订了有关命运的事件

ngOnDestroy() {
        if(this.routerEvents){
            this.routerEvents.unsubscribe();
        }
    }

相关内容

  • 没有找到相关文章

最新更新