我有一个简单的角度2 app种子。一个简单的引导;
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
这样的东西基于我不断得到的错误,这个:How to utilise URLSearchParams in Angular 2似乎我不能只将RouteParams
注入App的构造函数中,因为它不是由路由器创建的。
那么如何在加载时获得查询参数?我是否真的需要让App创建一个空组件(AppRoot或其他东西),其唯一目的是让它包含router-outlet
,这样我才能将它流过路由器?这似乎是很多不必要的开销..谁知道更好的方法?
好吧,事实证明你不能这样做,所以我不得不作弊。我的引导程序现在加载App,它只加载一个Route;
@RouteConfig([
{path: '/...', component: RootView, as: 'RootView', useAsDefault: true}
])
export class App {
constructor() {}
}
然后RootView可以按预期注入RouteParams;
export class RootView {
constructor(routeParams: RouteParams) {
}
}
这对我来说仍然感觉非常不优雅,如果有人有更好的方法,请做评论!