如何使用路由器插座加载 Angular 组件

Posted

技术标签:

【中文标题】如何使用路由器插座加载 Angular 组件【英文标题】:How to load Angular components using router-outlet 【发布时间】:2020-10-03 13:20:07 【问题描述】:

如果在Product 1 Component 之后单击Product 2 Component,则不会更新Product component 页面。我必须单击Hello Component,然后才单击Product 2 Component 以确保Product component 页面已更新为ID 号​​。

换句话说,Product 组件只有在我点击时才会更新:

    Product 1 Component Hello Component Product 2 Component

如何解决问题?这是 Stackblitz 项目:

https://stackblitz.com/edit/angular-ivy-insynj?file=src%2Fproduct%2Fproduct.component.ts

【问题讨论】:

【参考方案1】:

Demo 通常它正在工作。您缺少的是您无法在同一组件中重定向。这就是为什么你想错了。赋予每次点击的功能和

<nav> 
  <a  class="btn btn-tab" (click)="onChange('/hello')">Hello Component</a>  
  <a  class="btn btn-tab"(click)="onChange('/product/1')">Product 1 Component</a>
  <a  class="btn btn-tab"(click)="onChange('/product/2')">Product 2 Component</a>
</nav>
<router-outlet></router-outlet>

在component.ts中使用它

constructor(private _router:Router)
onChange(param)
  this._router.routeReuseStrategy.shouldReuseRoute = () => false;
  this._router.onSameUrlNavigation = 'reload';
  this._router.navigate([param]);

【讨论】:

以上是关于如何使用路由器插座加载 Angular 组件的主要内容,如果未能解决你的问题,请参考以下文章

Angular 4 嵌套路由器插座

Angular 9 嵌套延迟加载模块,带有嵌套路由器出口

Angular2 - 具有登录结构的路由器插座

Angular 5 路由器插座,JWT

在 Angular 2+ 中,使用路由器插座和嵌套组件有啥区别

Angular 2如何将变量从父组件传递到路由器出口