Angular 从应用文件夹外的文件夹延迟加载
Angular Lazy Loading from a folder outside the app folder
使用以下目录文件夹结构和代码:
我正在尝试延迟加载此模块
"tsdmns-modules/loader-module/tsdmns-loader-module.module"
来自
"app/app-routing.module"
然后加载这个组件
"/tsdmns-modules/loader-module/views/tsdmns-loader-view-console.component"
来自
"tsdmns-modules/loader-module/tsdmns-loader-module-routing.module"
当我进入 "http://localhost:4200/loader"
时,它会返回到 root
我想我有一个问题
{
path: 'loader',
loadChildren: 'src/tsdmns-modules/loader-module/tsdmns-loader-module/tsdmns-loader-module.module#TsdmnsLoaderModuleModule'
}
我写的这个文件夹目录对吗?
"src/tsdmns-modules/loader-module/tsdmns-loader-module/tsdmns-loader-module.module"
app/
-- app.module
-- app-routing.module
tsdmns-modules/
-- loader-module/
-- -- tsdmns-loader-module.module
-- -- tsdmns-loader-module-routing.module
-- -- views/
-- -- -- tsdmns-loader-view-console.component
[AppModule]
-----------
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { TestpageComponent } from './testpage/testpage.component';
@NgModule({
declarations: [
AppComponent,
TestpageComponent
],
imports: [
BrowserModule,
AppRoutingModule,
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
-------------------------------------------------------------
[AppRoutingModule]
------------------
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { TestpageComponent } from './testpage/testpage.component';
const routes: Routes = [
{
path: 'test',
component: TestpageComponent
},
{
path: 'loader',
loadChildren: 'src/tsdmns-modules/loader-module/tsdmns-loader-module/tsdmns-loader-module.module#TsdmnsLoaderModuleModule'
}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
-------------------------------------------------------------
[TsdmnsLoaderModuleModule]
--------------------------
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { TsdmnsLoaderModuleRoutingModule } from './tsdmns-loader-module-routing.module';
@NgModule({
declarations: [],
imports: [
CommonModule,
TsdmnsLoaderModuleRoutingModule
]
})
export class TsdmnsLoaderModuleModule { }
-------------------------------------------------------------
[TsdmnsLoaderModuleRoutingModule]
---------------------------------
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { TsdmnsLoaderViewConsoleComponent } from '../views/tsdmns-loader-view-console/tsdmns-loader-view-console.component';
const routes: Routes = [
{
path: '',
component: TsdmnsLoaderViewConsoleComponent
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class TsdmnsLoaderModuleRoutingModule { }
感谢您的帮助!
到目前为止,除了路由器模块路径和延迟加载模块中的组件声明外,您已经做对了所有事情。您的 loadChildren
路径应该相对于您的 app-routing.module
当前位置。根据你的文件夹结构应该是
// In your app-routing.module
{
path: 'loader',
loadChildren: '../tsdmns-modules/loader-module/tsdmns-loader-module.module#TsdmnsLoaderModuleModule'
}
而且您还必须在模块中声明 TsdmnsLoaderViewConsoleComponent
组件
// In your tsdmns-loader-module.module
@NgModule({
declarations: [TsdmnsLoaderViewConsoleComponent],
imports: [
CommonModule,
TsdmnsLoaderModuleRoutingModule
]
})
export class TsdmnsLoaderModuleModule { }
我已经准备好工作 stackblitz for your code. FYI keep in mind the Angular style guide 命名您的文件和组件。
使用以下目录文件夹结构和代码:
我正在尝试延迟加载此模块
"tsdmns-modules/loader-module/tsdmns-loader-module.module"
来自
"app/app-routing.module"
然后加载这个组件
"/tsdmns-modules/loader-module/views/tsdmns-loader-view-console.component"
来自
"tsdmns-modules/loader-module/tsdmns-loader-module-routing.module"
当我进入 "http://localhost:4200/loader"
时,它会返回到 root
我想我有一个问题
{
path: 'loader',
loadChildren: 'src/tsdmns-modules/loader-module/tsdmns-loader-module/tsdmns-loader-module.module#TsdmnsLoaderModuleModule'
}
我写的这个文件夹目录对吗?
"src/tsdmns-modules/loader-module/tsdmns-loader-module/tsdmns-loader-module.module"
app/
-- app.module
-- app-routing.module
tsdmns-modules/
-- loader-module/
-- -- tsdmns-loader-module.module
-- -- tsdmns-loader-module-routing.module
-- -- views/
-- -- -- tsdmns-loader-view-console.component
[AppModule]
-----------
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { TestpageComponent } from './testpage/testpage.component';
@NgModule({
declarations: [
AppComponent,
TestpageComponent
],
imports: [
BrowserModule,
AppRoutingModule,
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
-------------------------------------------------------------
[AppRoutingModule]
------------------
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { TestpageComponent } from './testpage/testpage.component';
const routes: Routes = [
{
path: 'test',
component: TestpageComponent
},
{
path: 'loader',
loadChildren: 'src/tsdmns-modules/loader-module/tsdmns-loader-module/tsdmns-loader-module.module#TsdmnsLoaderModuleModule'
}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
-------------------------------------------------------------
[TsdmnsLoaderModuleModule]
--------------------------
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { TsdmnsLoaderModuleRoutingModule } from './tsdmns-loader-module-routing.module';
@NgModule({
declarations: [],
imports: [
CommonModule,
TsdmnsLoaderModuleRoutingModule
]
})
export class TsdmnsLoaderModuleModule { }
-------------------------------------------------------------
[TsdmnsLoaderModuleRoutingModule]
---------------------------------
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { TsdmnsLoaderViewConsoleComponent } from '../views/tsdmns-loader-view-console/tsdmns-loader-view-console.component';
const routes: Routes = [
{
path: '',
component: TsdmnsLoaderViewConsoleComponent
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class TsdmnsLoaderModuleRoutingModule { }
感谢您的帮助!
到目前为止,除了路由器模块路径和延迟加载模块中的组件声明外,您已经做对了所有事情。您的 loadChildren
路径应该相对于您的 app-routing.module
当前位置。根据你的文件夹结构应该是
// In your app-routing.module
{
path: 'loader',
loadChildren: '../tsdmns-modules/loader-module/tsdmns-loader-module.module#TsdmnsLoaderModuleModule'
}
而且您还必须在模块中声明 TsdmnsLoaderViewConsoleComponent
组件
// In your tsdmns-loader-module.module
@NgModule({
declarations: [TsdmnsLoaderViewConsoleComponent],
imports: [
CommonModule,
TsdmnsLoaderModuleRoutingModule
]
})
export class TsdmnsLoaderModuleModule { }
我已经准备好工作 stackblitz for your code. FYI keep in mind the Angular style guide 命名您的文件和组件。