javascript - 为什么我不能将 RouterStateSnapshot 注入(inject)到 Angular 2 应用程序的登录组件中?

标签 javascript angular typescript routing

简单的 Angular 2 问题:当我将 RouterStateSnapshot 注入(inject)登录组件的构造函数时,为什么会出现 DI(依赖注入(inject))错误?我试图在注销之前获取 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)
{

这里有什么问题?关于与 ActivatedRoute、ActivatedRouteSnapshot 等不同的 RouterStateSnapshot,我缺少什么 - 我可以毫无问题地导入和注入(inject)?为什么我不能以相同的方式注入(inject) RouterStateSnapshot?

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

最佳答案

我认为您可以从 RouterState 中获取 RouterStateSnapshot。考虑这个例子:

constructor(private router: Router) {
    let routerStateSnapshot = this.router.routerState.snapshot;
}

关于javascript - 为什么我不能将 RouterStateSnapshot 注入(inject)到 Angular 2 应用程序的登录组件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47064149/

相关文章:

javascript - 组件变量是否自动绑定(bind)到服务变量

javascript - Ionic 3 存储时序

typescript - Angular2 处理 http 响应

javascript - jQuery 替换 div 中的多个单词

javascript - jQuery 动态输入字段

javascript - 如何使用draft.js插入图像?

javascript - 带单选按钮的 Angular 重复表行

javascript - Angular 和 Ionic 4 - 等待和异步未按预期工作

angular - 在 Angular 2 中更改当前路由上的单个路由参数

javascript - 从 LocalHost 获取数据