重定向到angular中的另一个html

重定向到angular中的另一个html,angular,Angular,有人能帮我一下吗,我想重定向到另一个页面的评论到底在哪里是错误的 你好 在你的app-routing.module.ts中添加你的路线: import { pageNameComponent} from './pageNameComponent.component'; import { AppComponent } from './app.component'; import { NgModule } from '@angular/

有人能帮我一下吗,我想重定向到另一个页面的评论到底在哪里是错误的


  • 你好

在你的app-routing.module.ts中添加你的路线:

    import { pageNameComponent} from './pageNameComponent.component';
    import { AppComponent } from './app.component';
    import { NgModule }             from '@angular/core';
    import { RouterModule, Routes } from '@angular/router';
    
    const routes: Routes = [
      { path: '', redirectTo: '/AppComponent', pathMatch: 'full' },
      { path: 'pageName', component: pageNameComponent },
    
    ];
    
    @NgModule({
      imports: [ RouterModule.forRoot(routes) ],
      exports: [ RouterModule ]
    })
    export class AppRoutingModule {}
在您的html中:

    <ul class="navbar-nav mr-auto"><!--mr-auto-->
       <a routerLink="/pageName" class="nav-link" href="#">pageName</a>
   </ul>
在控制器中

从'@angular/router'导入{RouterModule,Routes}; 构造函数(专用路由器:路由器)

在你的HTML中


在Angular中,您有HTML,也有组件,大部分逻辑都发生在组件中。您可以在HTML中插入逻辑来呈现内容,也可以根据特定条件或几乎任何DOM操作来显示内容,但您尝试执行的操作与DOM完全无关

如果希望在组件中而不是HTML中运行代码,请记住HTML中的逻辑主要用于呈现某些内容和操作DOM

下面是如何做到这一点:

您希望函数何时运行?例如,如果希望它在页面呈现时运行,请使用NgOnInit生命周期挂钩。下面是它的一个简单实现

导出类应用程序实现OnInit{
构造函数(专用路由器:路由器){}
恩戈尼尼特(){
如果(!loginService.verificarToken()){
this.router.navigate(['/login']);
}
}

}
您应该使用路由器->激活的角度方式

角护板

import { Injectable } from '@angular/core'
import { Router } from '@angular/router'
import {
  CanActivate, ActivatedRouteSnapshot,
  RouterStateSnapshot
} from '@angular/router'

import { LoginService } from './login.service' // <-- your service

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

  constructor(
    private router: Router,
    private loginService: LoginService
  ) { }

  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
      const isLoggedIn = this.loginService.verificarToken() // <-- verificarToken boolean

      if (!isLoggedIn) {
        this.router.navigate(['login') // <-- redirect to login
      }

      return isLoggedIn
  }
}
从'@angular/core'导入{Injectable}
从“@angular/Router”导入{Router}
进口{
激活,激活路由快照,
路由器状态快照
}来自“@angular/router”

从“./login.service”导入{LoginService}//您可以使用AuthGuard,它将处理您想要的内容,这是理想的解决方案。我有一个解决方案,但我认为这是非常糟糕的,这是增加了一个组成部分,它将负责重定向,正如我之前提到的,这是一个非常糟糕的解决方案,我试图做的恰恰是验证,如果有一个令牌,带我到主页,如果没有重定向到Login,这就是AuthGuard会为你做的。
ng-template #postLogin>
          <ul class="navbar-nav mr-auto"><!--mr-auto-->
    <span [hidden]="postloginRedirect()"></span>        
    <!--
              in case it is false I want you to redirect me to another html page
              ????
            -->
          </ul>
         </ng-template>
import { Injectable } from '@angular/core'
import { Router } from '@angular/router'
import {
  CanActivate, ActivatedRouteSnapshot,
  RouterStateSnapshot
} from '@angular/router'

import { LoginService } from './login.service' // <-- your service

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

  constructor(
    private router: Router,
    private loginService: LoginService
  ) { }

  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
      const isLoggedIn = this.loginService.verificarToken() // <-- verificarToken boolean

      if (!isLoggedIn) {
        this.router.navigate(['login') // <-- redirect to login
      }

      return isLoggedIn
  }
}
const appRoutes: Routes = [
  { path: '', component: HomeComponent },
  { path: 'login', component: LoginComponent },
  {
    path: 'dashboard', component: UsersComponent,
    canActivate: [AuthGuard], // <-- your guard redirect
  },
  // ...
]