1

我使用angular 2.0.0并且我有一个这样的 URL:

http://localhost:4200/?sptoken=MY_TOKEN#/resetPassword/

我想从中得到MY_TOKEN。我尝试了我能在这里找到的一切,但我只得到“ undefined”。

第二个问题是我使用标签定位策略,如果我像这样访问 URL,它会转换为http://localhost:4200/#/resetPassword/(查询字符串消失),这是我唯一可以访问的时间令牌在转换之前位于主要组件中,但我不知道如何获取它,我发现的大部分内容都是指矩阵表示法查询参数。

你对我如何解决这个问题有什么建议吗?

这是我的代码:

export class ResetPasswordComponent implements OnInit {

  constructor(private route: ActivatedRoute) {
    console.log(this.route.snapshot.queryParams['sptoken']); // when i don't use 
                                               //HashLocationStrategy it logs the token
  }

}

export class AppComponent implements OnInit {

  constructor(private router: Router, public configService: ConfigService, private cookieService: CookieService,private route: ActivatedRoute) {
    console.log(this.route.snapshot.queryParams['sptoken']);
  }
}

还有我的路线:

const appRoutes: Routes = [
    {path: UrlPaths.HELLO, component: HelloComponent, canActivate: [PrivatePageGuard]},
    {path: UrlPaths.LOGIN, component: LoginComponent},
    {path: UrlPaths.MAIN_PAGE, component: AppComponent},
    {path: UrlPaths.FORGOT_PASSWORD, component: ForgotPasswordComponent},
    {path: UrlPaths.RESET_PASSWORD, component: ResetPasswordComponent}
];

export const appRoutingProviders: any[] = [];

export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes);


export const UrlPaths = Object.freeze({
    LOGIN: 'login',
    HELLO: 'hello',
    FORGOT_PASSWORD: 'forgotPassword',
    RESET_PASSWORD: 'resetPassword',
    MAIN_PAGE: ''
});

我还尝试使用此 URL 尝试在主组件中获取令牌:http://localhost:4200/?sptoken=MY_TOKEN#但它发生的情况相同

4

1 回答 1

0

这可能是因为重定向。不会为重定向保留查询参数。代替重定向添加一个虚拟组件,在组件中从激活的路由中获取查询参数,然后使用router.navigate()

于 2016-10-08T17:50:49.147 回答