每当页面重新加载或URL更改发生时,每次都会调用typescript文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每当页面重新加载或URL更改发生时,每次都会调用typescript文件相关的知识,希望对你有一定的参考价值。

我需要在angular 5应用程序中实现一个会话。我想写一个ts文件,基本上,这个ts文件验证用户是否登录。每当页面重新加载或URL更改发生时,我都希望每次调用此ts文件。如何实施?

答案

使用AuthGuard

创建一个auth-guard.service.ts。

import { Injectable } from '@angular/core';
import { CanActivate, CanActivateChild } from '@angular/router';

@Injectable()
export class AuthGuard implements CanActivate, CanActivateChild {

  canActivate() {
    console.log('i am checking to see if you are logged in');
    return true;
  }

  canActivateChild() {
    console.log('checking child route access');
    return true;
  }

}

之后在您的路由文件中:

export const appRoutes: Routes = [
  {
    path: 'dashboard',
    children: [
      {
        path: '',
        canActivate: [AuthGuard],
        component: DashboardComponent
      },
      {
        path: 'users',
        component: DashboardUsersComponent,
        canActivateChild: [AuthGuard],
        children: [
          {
            path: '',
            component: DashboardUsersHomeComponent
          },
          {
            path: ':username',
            component: DashboardUserDetailsComponent,
            canDeactivate: [CanDeactivateGuard]
          }
        ]
      }
    ]
  }
]; 

以下是几个参考链接。

https://scotch.io/courses/routing-angular-2-applications/canactivate-and-canactivatechild

https://www.concretepage.com/angular-2/angular-2-4-route-guards-canactivate-and-canactivatechild-example

https://ryanchenkie.com/angular-authentication-using-route-guards

以上是关于每当页面重新加载或URL更改发生时,每次都会调用typescript文件的主要内容,如果未能解决你的问题,请参考以下文章

每当更改 BottomNavigationBarItem 时,FutureBuilder 都会重新加载

Gulp Browsersync会在每次文件更改时导致多次重新加载

更改 url 并更新页面内容而无需重新加载

每当页面重新加载时如何使用tomcat身份验证

如何在不重新加载页面的情况下更改页面 url

Facebook 如何在不重新加载页面或使用 # 或的情况下更改浏览器地址栏中的 URL?