Angular2路由器没有输出所有路由的方法,所以我所做的是定义了一个服务来输出这样的路由......
export class Route {
constructor(
public path: string,
public component: any
) {}
}
@Injectable()
export class RouteService {
public static getRoots(): Route[] {
return [
{ path: '/', component: HomeComponent },
{ path: '/about-me', component: AboutMeComponent },
{ path: '/food', component: FoodComponent },
{ path: '/photos', component: PhotosComponent },
{ path: '/technology', component: TechnologyComponent },
{ path: '/blog', component:BlogComponent }
];
}
}
现在我在我的main.ts
中使用它,如此@Routes(RouteService.getRoots())
,一切似乎都有效,但是我想使用相同的服务来定义一个变量,这样我就可以循环遍历路由数组。 ..喜欢这样
export class NavigationComponent {
public routes: Route[];
constructor(private router:Router, private routeService: RouteService) {
// just write this to the console for now
console.log(routeService.getRoots());
}
// more code here, etc....
然而,这会在控制台routeService.getRoots is not a function
中产生错误,我的应用程序崩溃了!我必须做什么,所以我可以在我的main.ts的@Routes()
部分使用该服务,同时在其他组件中使用该服务。我真的不知道我哪里出错了,因为Angular2现在正在弯曲我的想法!
答案 0 :(得分:2)
因为方法getRoots()
被标记为静态。如果你需要它是静态的,你必须这样称呼它:RouteService.getRoots()
。否则,只需删除static
关键字。
修改强>
您在@Routes()
部分没有服务实例,因此您需要一个静态方法。由于您所做的只是调用静态方法,因此您也不需要在构造函数中将其注入。