回去使用routerLink

cuc*_*uru 4 angular angular5 angular-routerlink

我正在使用routerLink返回我的页面.

目前的路线可以有3个级别:

myurl.com/parent
myurl.com/parent/child
myurl.com/parent/child/grandchild
Run Code Online (Sandbox Code Playgroud)

另外,我有一些不同的组件,因此它不会总是父组件,它可以是parent1,也可以是parent2,也可以是子组件和孙子组件,例如:

myurl.com/parent2/child1/grandchild2
Run Code Online (Sandbox Code Playgroud)

我想要的是总是去上一级,例如:

myurl.com/parent/child/grandchild -> myurl.com/parent/grandchild
Run Code Online (Sandbox Code Playgroud)

我做的是:

<button [routerLink]="['../'']">
       back
</button>
Run Code Online (Sandbox Code Playgroud)

但它总是导航到"myurl.com"

我怎么解决呢?

正如一些用户建议的那样,我正在分享我的路由配置:

在app.routing.ts中:

const APP_ROUTES: Routes = [
{
  path: '',
  canActivate: [LoggedInGuard],
  children: [
    {path: '', redirectTo: '/mainPage', pathMatch: 'full'},
    {path: 'parent', loadChildren: 'app/parent/parend.module#ParentModule'
]},
{path: '**', redirectTo: ''}
];
Run Code Online (Sandbox Code Playgroud)

在parent.routing.ts中:

const PARENT_ROUTES: Routes = [
 {path: '', component: ParentComponent},
 {path: ':id', component: ChildComponent},
];
Run Code Online (Sandbox Code Playgroud)

如果在浏览器中我写道:

myurl.com/parent -> it works
Run Code Online (Sandbox Code Playgroud)

但单击后退按钮失败

Vla*_*274 10

如果你试图"向上"导航一个级别,你几乎是正确的.

<a routerLink="..">Up</a>
Run Code Online (Sandbox Code Playgroud)

这将导航

myurl.com/parent/child/grandchild -> myurl.com/parent/child
Run Code Online (Sandbox Code Playgroud)

但是,如果您想像浏览器的后退按钮一样真正地"返回",则需要使用javascript.

StackOverflow问题上,针对该问题存在各种现有答案


对于任何更复杂的事情,它将取决于您正在尝试做什么 - 但它可能需要点击处理程序和URL的一些手动操作.