我有一个简单的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
注入到我的应用程序构造函数中,因为它不是由路由器创建的。
那么,如何在加载时获取查询参数呢?我真的需要让应用程序创建一个空组件(AppRoot或其他什么),唯一的目的是让它包含一个router-outlet
,这样我就可以让它通过路由器了吗?这似乎是很多不必要的开销。。有人知道更好的方法吗?
事实证明你不能这么做,所以我不得不作弊。我的引导程序现在加载应用程序,它只加载一条路由;
@RouteConfig([
{path: '/...', component: RootView, as: 'RootView', useAsDefault: true}
])
export class App {
constructor() {}
}
然后RootView可以按预期注入RouteParams;
export class RootView {
constructor(routeParams: RouteParams) {
}
}
这对我来说仍然非常不雅,如果有人有更好的方法,请发表评论!