Свойство ‘currentUrlTree’ является частным и доступно только в классе ‘Router’

#angular #typescript

#angular #typescript

Вопрос:

В настоящее время я пытаюсь создать функцию входа в систему с помощью jwt, однако в настоящее время я получаю приведенную ниже ошибку при попытке захватить текущий URL активного маршрута.

клиент?26cb:76 [по умолчанию] /Users/~/src/app/app.component.ts:51:75 Свойство ‘currentUrlTree’ является частным и доступно только в классе ‘Router’.

app.component.ts

 import {Component, NgZone, OnInit} from '@angular/core';
import {Router} from "@angular/router";
import {AuthService} from "./auth.service";
import {tokenNotExpired} from "angular2-jwt";

@Component({
 selector: 'app-root',
 templateUrl: './app.component.html',
 styleUrls: ['./app.component.css']
})
export class AppComponent {
 constructor (
  private _router: Router,
  private _authService: AuthService,
  private _zone: NgZone
 ) {
}
ngOnInit():void {
 this._router.navigate(['signin']);
 this._authService.getLoggedInEvent().subscribe((val) => {

  if (val) {
    // logged in
    this._zone.run(() => this._router.navigate(['stocklist']));
  } else {
    // logged out
    this._zone.run(() => this._router.navigate(['signin']));
  }
 });
} 

routeIsActive(routePath: string) {
 let currentRoute = this._router.currentUrlTree.firstChild(this._router.currentUrlTree.root);

 let segment = currentRoute == null ? '/' : currentRoute.segment;
 return  segment == routePath;
}

logout() {
 this._authService.logout();
}

loggedIn() {
 return tokenNotExpired();
}
}
 

Ответ №1:

Как говорится, currentUrlTree является закрытым членом. Используйте другого участника для доступа к текущему URL, например: Router.url.

Вот документация. Как вы можете видеть, они не предоставляют ‘currentUrlTree’, поскольку оно закрыто: