Angular2.0.0 - 从url hashtag位置策略获取查询字符串(带?)

时间:2016-10-08 17:49:00

标签: angular query-parameters angular2-router

我使用angular 2.0.0,我有一个这样的网址:

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

我想从中获取MY_TOKEN。我尝试了我能在这里找到的所有东西,但我只能得到" undefined"。

第二个问题是我使用hashtag位置策略,如果我像这样访问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: ''
});

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

1 个答案:

答案 0 :(得分:0)

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