应用 bootstrap 上的 RouteParams?

RouteParams on bootstrap of app?

我有一个简单的 angular 2 应用程序种子。一个简单的 bootstrap;

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 根据我不断收到的错误,以及: 看来我不能只将 RouteParams 注入到 App 的构造函数中,因为它不是由路由器创建的。

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

好吧,原来你做不到,只好作弊了。我的 bootstrap 现在加载 App,它只加载一个 Route;

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

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

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

这个我还是觉得很不雅,如果大家有更好的方法,欢迎留言!