1

我有一个简单的 Angular 2 应用程序种子。一个简单的引导程序;

bootstrap(App, [
    ROUTER_PROVIDERS,
    provide(LocationStrategy, {useClass: HashLocationStrategy})
]);

和App设置了几条路线;

@RouteConfig([
    {path: '/', component: Home, as: 'Home'},
    {path: '/login', component: Login, as: 'Login'}
])

这里没有什么花哨的。我做的一件事是 OAuth2 登录,它从应用程序重定向,然后返回,所以我想做的是在加载时传递一个查询参数。类似http://localhost/#?token=123 基于我不断收到的错误,以及这个:如何在 Angular 2 中使用 URLSearchParams似乎我不能只注入RouteParams我的 App 构造函数,因为它不是由路由器创建的。

那么如何在加载时获取查询参数?我是否真的需要让 App 创建一个空组件(AppRoot 或其他东西),其唯一目的是让它包含一个router-outletjust 以便我可以将它流过路由器?这似乎是很多不必要的开销..有人知道更好的方法吗?

4

1 回答 1

0

好吧,事实证明你不能这样做,所以我不得不作弊。我的引导程序现在加载 App,它只加载一个 Route;

@RouteConfig([
    {path: '/...', component: RootView, as: 'RootView', useAsDefault: true}
])
export class App {
    constructor() {}
}

然后RootView可以按预期注入RouteParams;

export class RootView {
    constructor(routeParams: RouteParams) {
    }
}

这对我来说仍然感觉非常不雅,如果有人有更好的方法,请发表评论!

于 2016-01-08T14:11:28.200 回答