首页 > 解决方案 > 路由更改时如何用角度重新加载整个组件?

问题描述

我想在路由更改时重新加载或重新渲染侧边栏组件我有以下代码:

  constructor(
    private auth: AuthService,
    private router: Router,
    private changeDetector: ChangeDetectorRef
  ) {
    this.auth.currentUser.subscribe(x => this.userData = x);
    this.router.events.subscribe((event) => {
      if (event instanceof NavigationStart) {
        this.changeDetector.detectChanges();
        console.log('enter');
      }
    });
  }

此输入显示日志“输入”但不重新加载组件。任何人都可以帮忙举个例子吗?

标签: angulartypescriptangular7

解决方案


通常组件路由不会重新加载,因为 Angular 作为 SPA(单页应用程序)工作 - 但components如果这是唯一的情况,您可以加载以减小浏览器大小

在侧边栏链接上使用href和您的路径名称- 这将使您的组件在您每次单击时重新加载 - 每次它都会从服务器加载所有内容 - 如果您使用加载此过程不是正确的方式 - 这只会有帮助您可以减少每次点击时的浏览器 RAM 使用量,并且不保留任何以前的数据,但路由将照常工作routerLinkanchorjslazy

href的问题也是这样——但要确保你真的想加载你的组件

希望它有所帮助 - 快乐编码:)


推荐阅读