Angular: ngOnInit()在每次导航时都会被调用
创始人
2024-10-22 21:30:40
0

在Angular中,ngOnInit()方法只会在组件初始化时被调用一次,而不是在每次导航时被调用。如果您需要在每次导航时执行一些逻辑,您可以使用Angular的路由守卫来实现。下面是一种解决方法的代码示例:

  1. 创建一个名为AuthGuard的路由守卫:
import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';

@Injectable({
  providedIn: 'root'
})
export class AuthGuard implements CanActivate {

  constructor(private router: Router) { }

  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
    // 在每次导航时执行逻辑
    console.log('ngOnInit() called on navigation');

    // 返回true以允许导航,返回false以阻止导航
    return true;
  }
}
  1. 在您的路由配置中使用AuthGuard
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from 'path-to-home-component';
import { AuthGuard } from 'path-to-auth-guard';

const routes: Routes = [
  {
    path: 'home',
    component: HomeComponent,
    canActivate: [AuthGuard] // 使用AuthGuard进行导航守卫
  },
  // 其他路由配置
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

现在,每次导航到home路由时,AuthGuardcanActivate()方法都会被调用,并执行您在其中定义的逻辑。

相关内容

热门资讯

透视app!wepoker买钻... 透视app!wepoker买钻石有用吗(透视)wepoker辅助器安装包(都是存在有透视)-哔哩哔哩...
透视神器!wepoker手机版... 透视神器!wepoker手机版透视脚本(透视)wepoker辅助工具(竟然一直都是有透视)-哔哩哔哩...
透视教程!wepoker免费脚... 透视教程!wepoker免费脚本(透视)wepoker免费辅助器(总是有挂)-哔哩哔哩1、玩家可以在...
透视app!wepokerpl... 透视app!wepokerplus作必弊(透视)wepoker透视是真的吗(真是有脚本)-哔哩哔哩一...
透视工具!德扑之心免费透视(透... 透视工具!德扑之心免费透视(透视)德普之星怎么开辅助(果然一直都是有脚本)-哔哩哔哩1、德普之星怎么...
透视app!wepoker线上... 透视app!wepoker线上大神(透视)黑侠破解wepoker(都是是有辅助器)-哔哩哔哩1.黑侠...
透视方法!hhpoker作必弊... 透视方法!hhpoker作必弊码怎么用(透视)hhpoker透视脚本下载(一贯真的有挂)-哔哩哔哩1...
透视app!德普之星的辅助工具... 透视app!德普之星的辅助工具介绍(透视)德普之星辅助工具如何设置(其实是有透视)-哔哩哔哩1、在德...
透视教程!越乡游义乌辅助器(辅... 透视教程!越乡游义乌辅助器(辅助)圣游辅助软件(原来是真的有辅助器)-哔哩哔哩1、起透看视 越乡游义...
透视攻略!hhpoker是正品... 透视攻略!hhpoker是正品吗(透视)hhpoker真的有透视吗(确实真的有挂)-哔哩哔哩1、hh...