根据可观察的route.events设置类

时间:2019-03-08 14:15:28

标签: javascript angular typescript

(角度7) 重定向发生后,我无法将侧面导航菜单选项设置为活动状态。其他所有时间都可以正常工作。我有一个侧面导航,该侧面导航基于一个名为activeRoute

的字段来设置其活动类

侧边栏html

   <mat-list-item *ngFor="let menuItem of sidebarMenu" class="menu-item" 
   [ngClass]="{'menu-item-active': activeRoute === menuItem.route}" 
   (click)="openPage(menuItem.route)">
   <h4 mat-line>{{menuItem.label}}</h4>
   </mat-list-item>

这是我的sidenav组件,请注意,我以前使用的是event.url而不是event.urlAfterRedirects,但是重定向后控制台并没有记录正确的值,直到我发现了后者。

侧边栏组件

ngOnInit() {
this.route.events.subscribe(event => {
  if (event instanceof NavigationEnd ) {
    this.activeRoute = event.urlAfterRedirects;    
  }
});
}

我尝试使用运行手动更改检测

this.changeDetectorRef.detectChanges()

但是我会收到以下错误

Error: ViewDestroyedError: Attempt to use a destroyed view: detectChanges

设置活动路由在正常导航下是可行的,但是当我实现身份验证(将用户从/ callback路由重定向到请求的路由)时,它不会添加活动类,这可能是因为其尝试读取的值是可观察的。我不太清楚应该如何解决此问题,或者以其他方式读取url,或者有一种方法可以在返回结果时异步更新类。

0 个答案:

没有答案