如何在Angular-6中重新构成/贫穷成分


  1. 您可以检查组件本身的组件实例吗?

  2. 您可以破坏现有实例并创建一个新实例吗?

我似乎对其中一个组件有问题。当多次使用不同的params组件的NGAFTERVIEWINIT访问多次时,仅第一次触发(我假设何时插入组件时)。随后的访问不会导致发射ngafterviewinit, ie,看起来好像是在重复使用相同的组件实例或其他内容...但是,我可以识别参数并使用更改的参数来做到这一点.. <</p>

但是,如果我访问一条新路线,然后回到有关的路线/相关路线,则正常工作。我可以看到它在新路线和相应组件开始之前就被破坏了。

我的目标是每次绕路线时重新加入组件。

so

  1. 您可以检查组件本身的组件实例吗?

  2. 您可以从代码中销毁现有实例并创建一个新实例吗?

或还有其他方法可以解决此问题。

我的设置

懒惰的负载模块 -> MDM

const routes: Routes = [
  {
    path: '',
    component: HomeComponent,
    children : [
                  { path: ':id' , component : AComponent }
    ]
  }

菜单锚固链接

  1. MDM/1000
  2. MDM/2000等

肯定还有另一种方法。

要回答您,您可能可以检查组件实例的存在,并且您可以根据需要重新创建它。

但是你不应该。

这不仅是过度的,而且还应该让Angular管理喷油器,否则(如果您不知道自己在做什么),您会遇到一些有趣的问题。

向您简要解释:重新加载路线不会触发组件的生命周期。一个组件的生命周期开始于实例化时,并在被摧毁时结束(这意味着"不再在DOM中")。

当您重新加载路线时,组件不会被破坏,因此您的问题。

要解决这个问题,请在您的生命周期挂钩中订阅更改事件:

ngAfterViewInit() {
  this.router.events
    .pipe(filter(event => event instanceof NavigationEnd))
    .subscribe(event => /* do something */);
}

我只能听取堆栈的最后一个事件(否则,您的订阅将经过很多次)。

相关内容

  • 没有找到相关文章

最新更新