角度路由和导航

Posted

技术标签:

【中文标题】角度路由和导航【英文标题】:Angular Routing and Navigating 【发布时间】:2021-10-01 23:29:54 【问题描述】:

我的app.component.html很轻

<div class="landing-page">
   <div class="main">
      <router-outlet></router-outlet>
      <div class="footer"> 
         <div class="logo-wrapper">
            <a routerLink="/"><img src="assets/images/logo.png" srcset="assets/images/logo@2x.png 2x,assets/images/logo@3x.png 3x" /></a>
         </div>
      </div>
   </div>
</div>

我在AppRoutingModule 中定义了以下路由:

const routes: Routes = [    
   path: 'book/:id', component: BookComponent ,
   path: '**', component: LandingPageComponent 
];

在我的LandingPageComponent 中,我正在导航到book,如下所示:

constructor(private router: Router)  


OpenBookComponent(id)        
    this.router.navigate(["/book", id], skipLocationChange: true);

到目前为止,一切都很完美。

问题从导航到["/"]返回主页时开始

在浏览器中单击返回 &lt; 或以编程方式尝试从 BookComponent 导航到基本链接,在地址栏中显示完整路径(即:http://localhost:4200/book/123)并导致 仅显示页脚

我在BookComponent 中导航回来的代码是:

constructor(private route: ActivatedRoute, private router: Router)  
    

ngOnInit()         
    this.id = this.route.snapshot.paramMap.get('id');       

closeBook()      
   this.router.navigate(["/"], skipLocationChange: true);

返回时如何清除地址中的所有参数,使其仅保留/http://localhost:4200

【问题讨论】:

【参考方案1】:

您不必删除参数。您必须像这样添加一条新路线:

const routes: Routes = [
   path: 'book/:id', component: BookComponent ,
   path: '', component: LandingPageComponent ,
   path: '**', component: LandingPageComponent 
];

现在如果你想导航到"['/']",你可以这样写,例如:

<a [routerLink]="['/']" class="nav-link active">Back</a>

现在它将显示组件,您在 angular routes 数组中 '' 后面写入的位置,在本例中为 LandingPageComponent

【讨论】:

以上是关于角度路由和导航的主要内容,如果未能解决你的问题,请参考以下文章

角度路由器导航然后重新加载

角度路由器导航问题

查询参数更改时,角度路由器导航不会加载页面

在没有导航或路由的角度 2 类型脚本中,将数据一个组件传递到另一个组件的所有可能性是啥?

角度 2 - 当我让路由器导航时,解析器在当前页面上的 OnDestroy 之前做出反应

角度导航到具有不同参数的相同路线