为什么不能在Angular 2 App中将RouterStateSnapshot注入到登录组件中?

Mui*_*rik 2 javascript routing typescript angular

简单的Angular 2问题:为什么在将RouterStateSnapshot注入到我的登录组件中的构造函数中时,为什么会出现DI(依赖项注入)错误?我试图在注销之前获取该url,因此可以在用户重新登录时将其传递给它(这样它将加载其上次访问的组件/页面)。事实证明,这比我预期的要困难得多。即使将其导入并包含在我的构造函数中的RouterStateSnapshot之后,我仍然遇到DI错误。这是我在登录组件中进行设置的方式:

import { ActivatedRoute, ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router';

constructor(private router: Router,
            private route: ActivatedRoute,
            private authenticationService: AuthenticationService,
            private alertService: AlertService,
            private state: RouterStateSnapshot,
            private authGuardService: AuthGuardService,
            private idle: Idle)
{
Run Code Online (Sandbox Code Playgroud)

这是什么问题 RouterStateSnapshot与ActivatedRoute,ActivatedRouteSnapshot等不同,我缺少什么?我可以毫无问题地将其导入和注入?为什么不能以相同方式注入RouterStateSnapshot?

顺便说一下,我可以在我的authGuardService中使用RouterStateSnapshot而不出现问题。它正在我的canActivate()函数中使用-并返回正确的结果。那么在这种情况下有什么不同?为什么我不能在我的登录组件中使用它?

Rob*_*hof 6

我认为您可以RouterStateSnapshot从那里得到RouterState。考虑以下示例:

constructor(private router: Router) {
    let routerStateSnapshot = this.router.routerState.snapshot;
}
Run Code Online (Sandbox Code Playgroud)