【发布时间】:2018-01-11 12:57:19
【问题描述】:
这是我的路线:
app.module.tsconst appRoutes: Routes = [
{ path: 'menu', component: MenuViewComponent,
children: [
{ path: ':name', component: MenuViewComponent,
children: [
{ path: ':name', component: MenuViewComponent ,
children: [
{ path: ':name', component: MenuViewComponent }
]
}
]
}
]
},
{ path: '', component: LandingViewComponent},
{ path: '**', component: PageNotFoundViewComponent }
];
我有一个服务可以返回这个用于制作我的菜单的数据结构
[
"name" : "root1",
"children" : [
"name" : "folder1",
"children" : [
"name" : "folder1_item1"
],
"name" : "folder2",
"children" : [
"name" : "folder2_item1"
]
],
"name" : "root2",
"children" : [
"name" : "folder3",
"children" : [
"name" : "folder3_item1"
],
"name" : "folder4",
"children" : [
"name" : "folder4_item1"
]
]
]
在我的 MenuViewComponent 内部,我有一个 onInit 方法,它循环遍历路由的子节点并将名称变量构建为路径。
menu-view.component.tsngOnInit() {
var path : string[] = [];
var cont = this.route;
var index : number = 0;
do
{
cont.params.subscribe( params => {
if(params)
path[index] = params['name'];
});
index++;
cont = cont.firstChild;
}
while(cont);
this.myservice.getMenuItems(path).then(menuItems => this.menuCards = menuItems);
}
此路径数组作为参数发送到我的获取菜单项方法,该方法将遍历树并返回该路径的菜单节点及其子节点。
MenuViewComponent 使用一个 ngFor 来显示 n 个 MenuCardComponents。如果他们有孩子使用按钮和 routerLink 属性,则每个链接到另一个菜单。
我的问题
当我单击其中一个按钮时,似乎不会更新 MenuViewComponent。它将更新地址栏中的 URL,但屏幕不会更新。如果我手动访问每个 url(例如:foo.com/menu/root1/folder1),它将显示正确的菜单选项,只是我无法弄清楚如何使路由与按钮链接一起工作。
据我了解,我需要以某种方式重新初始化 MenuViewComponent。但我不知道该怎么做。
任何帮助将不胜感激。
【问题讨论】:
标签: javascript angular routing