我目前正在用Anuglar 2开发一个App,想让它在App启动时路由到我的主页。
我有一个main.html和一个main.ts文件,这两个文件是单独加载的,并且有各种嵌套的视图(如果这是正确的名称的话)可以加载进去,主页就是其中之一。
这时的代码看起来是这样的。
import {[...], Router} from 'angular2/router';
[...]
@Component({
selector: 'main',
bindings: [Router]
})
@View({
directives: [[...] Router],
templateUrl: '[...]/main.html'
})
export class mainApp {
private router;
constructor(router: Router)
{
router.navigateByUrl('/home');
}
}
bootstrap(mainApp, [[...}, Router]);
[...]表示一些其他的代码,这些代码对于问题本身来说应该是不重要的。
现在有了这些代码,启动App会抛出以下错误。
Cannot resolve all parameters for function Router(registry, parent, hostComponent) {(?, ?, ?). 确保它们都有有效的类型或注释。
如何解决这个问题,让routingauto-navigation工作?
迟来的编辑:在项目中和队友讨论了一些关于更新到angular 2 alpha 45的问题......结果发现这其实是问题背后的原因......整个事情现在用我开始使用的东西(和一些调整导入的东西)工作得很好。
要自动重定向,你可以使用 redirectTo
像这样。
@RouteConfig([
{ path: '/', redirectTo: '/home' }
{ path: '/home', component: Home, as: 'Home' }
])
你应该使用 useAsDefault: true
来设置您的默认路由,像这样。
@RouteConfig([
{ path: '/home', component: Home, as: 'Home', useAsDefault: true },
{ path: '/other', component: Other, as: 'Other }
])
在启动时,假设请求的路径为'',应用程序将启动你的主组件。
用下面的代码创建separeta路由模块文件(例如app-routing.module.ts)。
import {NgModule} from '@angular/core';
import {RouterModule, Routes} from '@angular/router';
const routes: Routes = [
{path: '', redirectTo: '/home', pathMatch: 'full'},
{path: 'home', component: HomeComponent},
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule {}