【发布时间】:2017-08-18 14:12:43
【问题描述】:
我有三个命名的路由器插座,如下所示。
...
<router-outlet name="menus"><router-outlet>
<router-outlet><router-outlet>
<router-outlet name="footer"><router-outlet>
...
在标记中,我想将第一个 menus 路由到其中包含某些子菜单垃圾的组件,如 shown in the docs。
<ul *ngFor="let main of menus;"
routerLink="[{outlets:{menus:[{{main.link}}]}}]"
class="nav-items">{{main.header}}
我得到的错误是这样的:
错误:无法匹配任何路由。 URL 段:'%5B%7Boutlets:%7Bmenus:%5Bsubmenu1%5D%7D%7D%5D'
我不知道语法有什么问题。用谷歌搜索我的指甲,但没有找到一个 简单粗暴 的 routerLink 版本示例,该示例显示了如何在命名出口中指向路线。
编辑:根据 cmets 和示例,我需要重新编写正在使用的代码,但仍然出现相同的错误。在标记中:
<ul *ngFor="let main of menus;"
(click)="pullMenu(main.link)"
class="nav-items">{{main.header}}
然后,在 TS 中:
constructor(private router: Router, private route: ActivatedRoute) { }
pullSubmenu(input) {
console.log(input);
this.router.navigate(
[{ outlets: { menus: [input] } }],
{ relativeTo: this.route });
}
现在,我收到以下错误(submenu1 是配置路径的名称)。
错误:无法匹配任何路由。 URL 段:'submenu1'
我的路由在模块中是这样设置的。
const routes: Routes = [
{ path: "submenu1", component: Submenu1Component },
{ path: "submenu2", component: Submenu2Component }
];
@NgModule({
declarations: [
AppComponent,
NavbarComponent,
MainAreaComponent,
Submenu1Component,
Submenu2Component
],
imports: [
BrowserModule,
RouterModule.forRoot(routes)
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
【问题讨论】:
-
您在路由器配置中的何处声明
outlet属性? -
@yurzui 无处可去,兄弟!这就是问题所在(除了无数其他事情)。就在你写评论的时候,我说到做到。发表回复,我一定会为你 +1!
-
看上面的例子。您可以使用
routerLink进行导航。如果你愿意,你可以投票给我的其他答案:) stackoverflow.com/questions/38038001/… -
@KonradViltersten,我想通了。正如我的其他回答所说,如果您作为字符串提供命令,您不能使用
routerLink,但您可以评估它们并作为数组提供。我将该信息添加到我的答案中。
标签: html angular angular-routing