Angular:ngOnInit()在每次导航中都被调用

问题描述 投票:0回答:1

我使用Angular 9,并且使用RouterModule。我在某处读到ngOnInit()函数在两次导航之间仅调用一次,我的意思是每个组件仅初始化一次(ngOnInit()函数)。我发现这是不正确的。

我的代码示例:首先,localhost / home加载HomeComponent,然后调用以下ngOnInit():

  ngOnInit(): void
  {
    console.log('init home component');
  }

然后,在HomeComponent中,我使用[routerLink]导航到localhost / user加载UserComponent和下面的ngOnInit()称为:

  ngOnInit(): void
  {
    console.log('init user component');
  }

最后,在UserComponent中,我使用[routerLink]导航到localhost / home再次加载HomeComponent,并调用了以下ngOnInit():

  ngOnInit(): void
  {
    console.log('init home component');
  }

结果,HomeComponent DOES再次初始化。我想念什么吗?谢谢!

angular angular-ui-router ngoninit
1个回答
0
投票

Angular 9.x组件将在每次加载时初始化,并且在使用ngOnInit()装饰器时将始终运行OnInit。但是,模块和单例服务的加载方式可以不同。

例如,您可以延迟加载模块:

https://angular.io/guide/lazy-loading-ngmodules

或者让服务仅加载一次(例如,如果您希望变量保持不变):

https://angular.io/guide/singleton-services

© www.soinside.com 2019 - 2024. All rights reserved.