【发布时间】:2021-05-07 19:47:54
【问题描述】:
我正在尝试启动一个 Angular 项目,但由于某种原因默认应用程序无法运行。
应用程序启动时没有任何错误,但浏览器显示一个空白页面而不是“home works!”。
当我进入登录页面时,什么也没有发生,其他链接(如 /hello)不会将我重定向到主页。 我认为我的路由模块根本不工作。 我可以在 url 中写任何东西没有任何反应。 代码如下:
app-routing.module.ts :
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { LoginComponent } from './login/login.component';
import { HomeComponent } from './home/home.component';
import {EdoxiaGuard} from './services/guard/edoxia-guard.guard';
const routes: Routes = [
{ path: '/', component: HomeComponent, canActivate:[EdoxiaGuard] },
{ path: '/login', component: LoginComponent, canActivate:[EdoxiaGuard] },
{ path: '**', redirectTo: '/' }
];
@NgModule({
imports: [RouterModule.forRoot(routes,
{ enableTracing: true })],
exports: [RouterModule]
})
export class AppRoutingModule { }
export const routingComponents = [LoginComponent, HomeComponent]
app.component.ts :
import { Component } from '@angular/core';
@Component({
selector: 'edoxia',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
title = 'edoxia-front';
}
app.module.ts :
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppRoutingModule, routingComponents } from './app-routing.module';
import { AppComponent } from './app.component';
import { ToolbarComponent } from './shared/toolbar/toolbar.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
@NgModule({
declarations: [
AppComponent,
routingComponents,
ToolbarComponent
],
imports: [
BrowserModule,
AppRoutingModule,
BrowserAnimationsModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
app.component.html:
<router-outlet></router-outlet>
index.html:
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>EdoxiaFront</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
<edoxia></edoxia>
</body>
</html>
home.component.html:
<p>home works!</p>
home.component.ts :
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss']
})
export class HomeComponent implements OnInit {
constructor() { }
ngOnInit(): void {
}
}
login.component.html:
<p>login works!</p>
login.component.ts:
import { Component, OnInit } from '@angular/core';
import { Router, ActivatedRoute } from '@angular/router';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.scss']
})
export class LoginComponent implements OnInit {
constructor(private router: Router, private route: ActivatedRoute) { }
ngOnInit(): void {
}
}
edoxia-guard.guard.ts :
import { Injectable } from '@angular/core';
import { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class EdoxiaGuard implements CanActivate {
canActivate() {
return true;
}
}
【问题讨论】:
-
我正在使用 Pop!_OS 20.04 LTS Gnome 版本:3.36.8 NPM 版本:6.14.12 @angular/router@11.2.13
标签: angular