4

我想导航到名为 modal 的辅助路线,而无需明确说明主要路线。

我在组件类中试过这个:

onclick(){
    this.router.navigate([{ outlets: { foo: 'modal' } }], { relativeTo: this.route });
}

上面的代码似乎工作。但是,它导航到/first(foo:modal)一瞬间,然后导航到 root /

我究竟做错了什么?

做这样的事情会很好:

<a href="#" routerLink="/*(foo:modal)">Open Modal</a>

这样它就可以匹配任何主要路线......这可能吗?

4

2 回答 2

3

您可以通过指定插座仅设置辅助段{ oultletName: url}

<a [routerLink]="[{outlets: { modal: 'edit/20']}}]">Edit</a>   
router.navigate([{outlets: { modal: 'edit/20'}}]);

或多个段:

<a [routerLink]="[{outlets: {primary: 'products', modal: 'edit/20']}}]">Edit</a> 
router.navigate([{outlets: {primary: 'products', modal: 'edit/20'}}]);
于 2017-07-30T02:55:05.573 回答
3

问题href="#"出在导致立即重定向的 achor 标记上。删除它解决了这个问题。

要导航到次要路线而不考虑主要路线:

<a routerLink="one" >Home</a>
<a routerLink="two" >Admin</a>
<a [routerLink]="[{ outlets: { foo: 'modal' } }]">open</a>
<a [routerLink]="[{ outlets: { foo: null } }]">close</a>

如果您想强制导航:

<a (click)="open()">Open</a>
<a (click)="close()">Close</a>

open() {
    this.router.navigate([{ outlets: { foo: 'modal' } }]);
}
close() {
    this.router.navigate([{ outlets: { foo: null } }]);
}
于 2017-07-30T03:27:51.173 回答