我有了两个出口一个应用程序组件:角2增加了尾部斜杠URL以多路由器奥特莱斯
template: '<router-outlet></router-outlet><router-outlet name="popup"></router-outlet>'
我跟着this link例子创建路由和routerLinks,一切工作正常只要routerLinks在应用程序组件内。但是,我已经创建了一个带有菜单的主布局组件,以便我可以在所有页面上重复使用它,并使用loadChildren来加载其中相应的模块和组件。
<app-main-menu></app-main-menu>
<h1>
{{title}}
</h1>
<div class="container">
<router-outlet></router-outlet>
</div>
的问题是,当我移动routerLinks的弹出出口进入菜单,它包含的主要途径结尾斜线和所产生的URL不起作用。因此,例如此routerLink:
<a [routerLink]="[{ outlets: { popup : ['login'] } }]">Login</a>
创建链接'本地主机/ mainroute(弹出:登录)'如果它被放置在该应用部件和'本地主机/ mainroute /(弹出:登录)'如果它被放置在菜单组件中。
虽然第一URL的工作,第二个URL产生一个错误: 错误:无法匹配任何路线:“mainroute”
我不明白为什么它把两种情况是不同的。我也不明白,即使网址'localhost/mainroute /'有效,第二个生成的网址并不是因为结尾的斜杠。
有人可以帮助我吗?
我发现暂时的解决方法。我创建了一个函数和一个指向它的链接。链接看起来像这样:** Login **并且该函数使用一个像这样的结构导入的路由器来获取没有结尾斜杠的url:** public openLogin():void { this.router.navigateByUrl(this.router .url +'(popup:login)'); } ** – Martinator