重定向到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
},
// ...
]