angular - 如何导航到父路由(或清除路由器导出)? Angular 5

标签 angular angular5 angular-routing

假设我的观点是这样的:

本地主机/main

  <h1>Angular Router</h1>
  <nav>
    <a routerLink="/crisis-center" routerLinkActive="active">Crisis Center</a>
    <a routerLink="/heroes" routerLinkActive="active">Heroes</a>
  </nav>
  <router-outlet></router-outlet>

如果我点击英雄,那么 URI 将是例如。 localhost/main/heroes

我想在 typescript 中添加功能以导航回localhost/main

但是我不想使用这样的功能

private navigateToDefaultView() {
    this.router.navigate(["/main"]);
}

因为/main部分可能会改变。我更喜欢这样的东西

private navigateToDefaultView() {
    this.router.navigate(ToParentRoute);
// or
    clearRouterOutletSomeHow
}

这可能吗?或者我被迫以字符串形式提供 URI。


编辑: 我想出了类似的东西:

ngOnInit() {
        this.isMainActivated= this.router.url.indexOf("/main") > -1;
        this.isHomeActivated= this.router.url.indexOf("/home") > -1;
}

private navigateToDefaultView() {
        let url;
        if (this.isMainActivated) {
            url = this.router.url.substring(0, this.router.url.indexOf("main") + "main".length);
        } else if (this.isHomeActivated) {
            url = this.router.url.substring(0, this.router.url.indexOf("home") + "home".length);
        }

        this.router.navigate([url]);
    }

但我更喜欢更优雅的解决方案。

最佳答案

解决方案比我想象的要容易。

<button [routerLink]="['../']">
   Back
</button>

并且它返回到父网址。

关于angular - 如何导航到父路由(或清除路由器导出)? Angular 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49133132/

相关文章:

javascript - Angular 使用可观察的完整与下一个处理程序以及何时适本地使用每个处理程序

javascript - Angular2 - 当两个事件发射器发出时订阅

javascript - 如何使两个按钮像切换按钮一样

javascript - Angular 5 - HTTPClient + Observable + 显示数据

javascript - 单击 Angular 中的编辑内联编辑表行

angular - 如何直接将 HTTP 响应分配给 Angular 中的接口(interface)模型类型

AngularJS 和 ui.bootstrap.modal 服务 templateUrl - 我可以使用 Angular 路由吗?

css - 无法在另一个组件的左侧获得 Angular 组件

angular - 从 Angular 5 中的 URL 获取数据

dart - 我如何使用 Angular 2 Dart 在页面重新加载时支持 RouteParams?