gpt4 book ai didi

node.js - Angular2嵌套路由不起作用,没有报告错误,但空白页

转载 作者:太空宇宙 更新时间:2023-11-04 02:00:22 25 4
gpt4 key购买 nike

请帮我检查代码...npm start后cli中没有编译错误或其他输出。但浏览器似乎是一个空白页面。我检查了一遍又一遍,还是找不到问题所在。

PS:我是 angular2 的新生...

应用程序模块

@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AdminModule,
WaiterModule,
CookModule,
AppRoutingModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

应用程序路由模块

const appRoutes: Routes = [
{
path: "",
redirectTo: "/admin",
pathMatch:"full"
}
];

@NgModule({
imports: [
RouterModule.forRoot(appRoutes, { enableTracing: true })
],
exports: [RouterModule]
})
export class AppRoutingModule { }

app.component.html

<div style="text-align:center">
<h1>
Welcome to Angular2
</h1>
</div>

<router-outlet></router-outlet>

管理模块

@NgModule({
declarations: [
AdminComponent,
DishBoardComponent,
UserBoardComponent,
StatisticsBoardComponent,
AdminSiderBarComponent
],
imports: [
CommonModule,
AdminRoutingModule
]
})
export class AdminModule { }

管理路由模块

const adminRoutes: Routes = [
{
path: "admin",
component: AdminComponent,
children: [
{ path: "", redirectTo: "/checkout",pathMatch:"full" },
{ path: "checkout", component: CheckoutBoardComponent },
{ path: "dish", component: DishBoardComponent },
{ path: "user", component: UserBoardComponent },
{ path: "statistics", component: StatisticsBoardComponent }
]
}
];

@NgModule({
imports: [
RouterModule.forChild(adminRoutes)
],
exports: [RouterModule]
})
export class AdminRoutingModule { }

admin.component.html

<p>
admin works!
</p>
<a routerLink="/checkout">Checkout</a>
<a routerLink="/user">User</a>
<a routerLink="/dish">Dish</a>
<a routerLink="/statistics">Statistics</a>

<router-outlet></router-outlet>

<br>
footer

最佳答案

您似乎没有在 app.routing.module 中定义 admin 路由及其子路由。

你应该让它工作

app.module.ts:

这里不需要导入其他模块。只需导入AppRoutingModule

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

/** App Modules **/
import { AppRoutingModule } from './app.routing.module';
/** App Components**/
import { AppComponent } from './app.component';

@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }

app.routing.module.ts:

加载 admin.module 路由并将其传递给 admin 路由。

import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';

/** App Modules**/
import { AdminModule} from './admin/admin.module';

export function exportAdminModule() {
return AdminModule;
}

const appRoutes: Routes = [
{
path: 'admin',
loadChildren: exportAdminModule
},
{
path: '',
redirectTo: '/admin',
pathMatch: 'full'
},
{
path: '**',
redirectTo: '/admin'
}
];

@NgModule({
imports: [
RouterModule.forRoot(appRoutes, { enableTracing: true })
], exports: [RouterModule]
})

export class AppRoutingModule { }

admin.module.ts:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

// Import your components

/** App Routing **/
import { AdminRoutingModule} from './admin.routing.module';

@NgModule({
declarations: [
// your components
// your admin.component
],
imports: [
CommonModule,
AdminRoutingModule
]
})
export class AdminModule { }

admin.routing.module.ts:

设置一个空路径作为基本路由''

import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';

// Import your components

@NgModule({
imports: [
RouterModule.forChild([
{
path: '',
component: AdminComponent,
children: [
{ path: '', redirectTo: '/checkout', pathMatch: 'full' },
{ path: 'checkout', component: CheckoutBoardComponent },
. . .
]
}
])
], exports: [RouterModule]
})

export class AdminRoutingModule{ }

如果您想拥有更多子路由,例如嵌套的 router-outlet,只需使用导出和 loadchildren 复制我在 app.module.routing 上显示的内容即可。

我不太确定您是否想要实现 app.routing.module 上显示的内容。您确定要将所有内容重定向到管理员吗?

类似于:

@NgModule({
imports: [
RouterModule.forRoot([
{
path: 'login',
component: LoginPageComponent,
canActivate: [PreventLoggedInAccess]
},
{
path: 'admin',
loadChildren: exportAdminModule
},
{
path: '',
redirectTo: '/login',
pathMatch: 'full'
},
{
path: '**',
redirectTo: '/login'
}
], { useHash : true })
], exports: [RouterModule]
})

其中 PreventLoggedInAccess authguard 会阻止您在已登录的情况下登录,并且

@NgModule({
imports: [
RouterModule.forChild([
{
path: '',
component: AdminComponent,
canActivateChild: [AuthGuardService],
children: [
. . .
]
}
])
], exports: [RouterModule]
})

在我看来,使用 AuthGuardService 仅当您登录时才允许访问子路由会更有意义。

Here您可以阅读有关 authguards 的更多信息。

关于node.js - Angular2嵌套路由不起作用,没有报告错误,但空白页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46249909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com