Не удается выполнить навигацию по маршруту, возможно, из-за разрешения в угловых 5? - PullRequest
2 голосов
/ 07 марта 2019

Это мой компонент Login

login-component.ts

ngOnInit() {
        this.loginEventsData = this.route.snapshot.data['loginEventsData'];
        this.isAppActive = this.loginEventsData["A"][0]["IsActive"];
        if (!this.isAppActive) { // I'm getting true here                       
            this.router.navigate(["/maintenance"]);         
}

login.resolver.ts

import { Injectable } from "@angular/core";
import { Router, Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from "@angular/router";
import { LoginService } from "./login.service";
import { Observable, forkJoin } from "rxjs";
import { map, mergeMap } from "rxjs/operators";
import { DashboardService } from "../dashboard/dashboard.service";

@Injectable()
export class LoginResolver implements Resolve<any> {

    constructor(private loginService: IportLoginService, private dashboardService: DashboardService, private router: Router, ) {

    }

    resolve(
        route: ActivatedRouteSnapshot,
        state: RouterStateSnapshot
    ): Observable<any> {
        let A$ = this.loginService.getApplicationCentre();
        let B$ = this.loginService.getLoginBackgroundImg();
        let CD$ = this.loginService.getLoginId()
            .pipe(
                mergeMap(b => this.loginService.getUserDetails(b)
                    .pipe(map(c => [b, c])))
            );        
        return forkJoin(A$, B$, CD$).pipe(map(([A, B, [C, D]]) => ({ A, B, C, D})));
    }
}

app-routing.module.ts

  const routes: Routes = [
        {
            path: 'login', component: IportLoginComponent, resolve: { loginEventsData: LoginResolver }
        },
        { path: 'termsAndConditions', component: TermsAndConditionsComponent },
        { path: 'maintenance', component: MaintenanceComponent,pathMatch: 'full'}
    ]

    @NgModule({
    imports: [RouterModule.forRoot(routes, { useHash: true, enableTracing: true})],
    exports: [RouterModule],
    providers: [
        LoginResolver
      ]
})

Это результат, который я получаю, когда отслеживаю

Router Event: NavigationCancel
platform-browser.js:211 NavigationCancel(id: 2, url: '/maintenance')
platform-browser.js:211 NavigationCancel {id: 2, url: "/maintenance", reason: "Navigation ID 2 is not equal to the current navigation id 3"}

Естьнет охраны для этого компонента, и я получаю navigationCancel . Невозможно перенаправить на компонент обслуживания В чем может быть причина?

Когда я отслеживаю, я получаю Идентификатор навигации 2 не равен текущему идентификатору навигации 3 .Но в данный момент у меня не работает какая-либо другая навигация.

Можно ли отменить все остальное и перейти к компоненту обслуживания?

Любая помощь будет признательна!

...