在应用程序或组件加载 Angular 7 之前运行服务

And*_*leb 2 javascript typescript angular angular7

我正在使用 Angular 7 构建一个应用程序,我已经处理了 API 调用、使用 C# 的 JWT 令牌身份验证系统,并在必要时、用户登录和注销时更新了 LocalStorage(),所有这些都运行良好。

我的问题是我希望它作为应用程序中的中间件而不是在生命周期方法上运行登录检查 - ng.onInit()。我该怎么办?

有没有办法将生命周期事件作为入口组件或服务执行。也就是说,在加载任何组件之前,它能够检查用户是否登录并通过路由器重定向到所需的页面。

小智 5

Guard 基于路由...所以我认为您应该更喜欢模块/服务解决方案。

import { APP_INITIALIZER } from '@angular/core';

然后将其添加为提供者,如下所示:

 export function initApp(initService: YourInitService) {
  return () => { 
    initService.Init();
  }
}
    { provide: APP_INITIALIZER,useFactory: initApp, deps: [YourInitService], multi: true } 
Run Code Online (Sandbox Code Playgroud)