简体   繁体   English

角度路由没有重定向到正确的组件

[英]Angular routes not redirecting to right components

I'm creating a blog application where there is a admin side and a user side.我正在创建一个博客应用程序,其中有一个管理端和一个用户端。 I want to keep the routing of admin and client side separated into two modules.我想将管理和客户端的路由分成两个模块。 But after creating the routing module for client side and importing it to the app.module.ts it's not catching the client side routes and returning page-not-found component.但是在为客户端创建路由模块并将其导入 app.module.ts 后,它不会捕获客户端路由并返回 page-not-found 组件。 Below is my app.module.ts file下面是我的app.module.ts 文件

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

import { AppRoutingModule } from './app-routing.module';
import { ClientModule } from './client/client-routing/client.module';
import { AppComponent } from './app.component';
import { HomeComponent } from './client/home/home.component';
import { FooterComponent } from './client/footer/footer.component';
import { FeaturedBlogComponent } from './client/featured-blog/featured-blog.component';
import { PageNotFoundComponent } from './page-not-found/page-not-found.component';



@NgModule({
  declarations: [
    AppComponent,
    HomeComponent,
    FooterComponent,
    FeaturedBlogComponent,
    PageNotFoundComponent

  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    HttpClientModule,
    ClientModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

app-routing.module.ts app-routing.module.ts

import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './client/home/home.component';
import { PageNotFoundComponent } from './page-not-found/page-not-found.component';

const routes: Routes = [
  {path: '', component: HomeComponent},
  {path: 'home', component: HomeComponent },
  {path: '**', component: PageNotFoundComponent}
];

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

client.module.ts客户端模块.ts

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

import { ClientRoutingModule } from './client-routing.module';
import { BlogListComponent } from '../blog-list/blog-list.component';
import { BlogDetailComponent } from '../blog-detail/blog-detail.component';
import { AboutComponent } from '../about/about.component';
import { ContactComponent } from '../contact/contact.component';


@NgModule({
  declarations: [BlogListComponent, BlogDetailComponent, AboutComponent, ContactComponent],
  imports: [
    CommonModule,
    ClientRoutingModule
  ]
})
export class ClientModule { }

client-routing.module.ts客户端routing.module.ts

import { Routes, RouterModule } from '@angular/router';
import { BlogListComponent } from '../blog-list/blog-list.component';
import { BlogDetailComponent } from '../blog-detail/blog-detail.component';
import { AboutComponent } from '../about/about.component';
import { ContactComponent } from '../contact/contact.component';


const routes: Routes = [
  {path: 'blogs', component: BlogListComponent},
  {path: 'blog/:_id', component: BlogDetailComponent},
  {path: 'about', component: AboutComponent},
  {path: 'contact', component: ContactComponent}
];

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

When I'm trying to access the client side routes like AboutComponent or BlogListComponent it's returning page-not-found component当我尝试访问像 AboutComponent 或 BlogListComponent 这样的客户端路由时,它正在返回 page-not-found 组件

Since you are using feature modules ( ie: ClientModule ), Your client module routes aren't being loaded yet, only what is in app-routing.module.ts are eagerly loaded.由于您正在使用功能模块(即: ClientModule ),您的客户端模块路由尚未加载,只有 app-routing.module.ts 中的内容会被急切加载。 Try lazy loading the ClientModule in your app-router.module.ts file.尝试在 app-router.module.ts 文件中延迟加载 ClientModule。

// Add this to routes array in app-router.module.ts.
{ path: 'blog', loadChildren: () => import('./path/to/client.module').then(m => m.ClientModule) }

Then update your routes in your client-router.module.ts like so:然后像这样更新 client-router.module.ts 中的路由:

const routes: Routes = [
  {
    path: '', // Base route is now 'blog' or whatever you choose to call it in app-routing.module.ts.
    component: BlogListComponent,
    children: [ path: ':_id', component: BlogDetailComponent ]
  },
  {path: 'about', component: AboutComponent},
  {path: 'contact', component: ContactComponent}
];

As a side note, I would consider refactoring About & Contact routes to be seperate from ClientModule, unless that is what you're aiming for.作为旁注,我会考虑重构 About & Contact 路由以与 ClientModule 分开,除非这是您的目标。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM