在保留主要路线的同时角度导航到次要路线

时间:2017-07-30 02:27:02

标签: angular angular-routing angular-router

我想导航到名为模态的辅助路线,而不明确说明主路线。

我在组件类中试过这个:

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

以上代码似乎有效。但是,它导航到/first(foo:modal)一瞬间,然后导航到根/

我做错了什么?

做一些像这样的事情会很好:

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

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

2 个答案:

答案 0 :(得分:3)

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

无论主要路线如何,都要导航到辅助路线:

<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 } }]);
}

答案 1 :(得分:1)

您只能通过指定插座{ 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'}}]);