use*_*624 10 angular-routing angular angular-cli-v7
我在 Mac 环境下成功创建了一个 angular 项目
Angular CLI: 7.0.5
Node: 8.11.3
OS: darwin x64
Angular: 7.0.3
Run Code Online (Sandbox Code Playgroud)
现在我在 ubuntu 18.04 上使用设置运行相同的代码
Angular CLI: 7.3.9
Node: 12.9.1
OS: linux x64
Angular: 7.2.15
Run Code Online (Sandbox Code Playgroud)
但是在尝试延迟加载另一个模块时出现了一个非常奇怪的问题,我不断收到此错误错误:找不到模块“app/website/site.module”
这是我的项目结构
和 app-routing.module.ts
const routes: Routes = [
{
path: 'site',
loadChildren: 'app/website/site.module#SiteModule',
}
]
Run Code Online (Sandbox Code Playgroud)
路由用于在mac中工作但在ubuntu中失败
我查了一个不同的解决方案
const rootRoutes: Routes = [
{ path: 'site', loadChildren: './website/site.module#SiteModule' }
];
Run Code Online (Sandbox Code Playgroud)
但它仍然无法正常工作。
Pav*_* B. 15
我在stackblitz上创建了一个示例项目
解释:
所以首先,你必须像这样创建你的路线:
const routes: Routes = [
// this will get lazy loaded
{
path: 'lazyload',
loadChildren: () => import('./module/module.module').then(mod => mod.ModuleModule)
},
// default route
{
path: '**',
component: Component1Component
}
];
Run Code Online (Sandbox Code Playgroud)
然后将其添加到 app 模块(根模块):
@NgModule({
imports: [
// your imports here ...
// add your routes (forRoot() is only in the root module!)
RouterModule.forRoot(routes)
],
// your providers, declarations, etc.
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)
然后你必须向子模块添加路由(在本例中为 ModuleModule):
const routes: Routes = [
{ path: 'route1', component: Component2Component },
{ path: '', component: Component3Component }
];
@NgModule({
imports: [
// your imports here ...
RouterModule.forChild(routes)
],
declarations: [Component2Component, Component3Component]
})
export class ModuleModule { }
Run Code Online (Sandbox Code Playgroud)
现在它应该可以工作了,如果您有任何问题,我会在这里:)
我遇到了类似的问题,在我的代码中,它与您的路径相同
{
path: 'admin', loadChildren: './admin/admin.module#AdminModule'
}
Run Code Online (Sandbox Code Playgroud)
在我更改文件 tsconfig.app.json 之后
它开始工作并找到子路径,在附加的图像上你可以看到我所做的更改
| 归档时间: |
|
| 查看次数: |
6718 次 |
| 最近记录: |