mxi*_*xii 6 lazy-loading angular2-routing angular
我们来看看我的plunker:https://plnkr.co/edit/22RIoGsvzfw2y2ZTnazg ? p = preview
我想懒惰加载一个模块作为子路由.
因此,路线/lazy应该 LazyModule成为<router-outlet>我的MainComponent.
然后它将在它DummyComponent和延迟加载的模块之间切换.
相反,现在延迟加载的模块将被渲染到AppComponent..
有任何想法吗?
max*_*992 19
如果你想延迟加载一个模块,不要像你在这里那样导入它:
src/app.ts:
import { LazyModule } from './lazy/lazy.module';
...
@NgModule({
imports: [ BrowserModule, RouterModule.forRoot(routes), LazyModule ]
Run Code Online (Sandbox Code Playgroud)
如果加载模块(使用import),它将被捆绑到主模块中,而不是具有分离的块.
替换为:
@NgModule({
imports: [ BrowserModule, RouterModule.forRoot(routes) ]
Run Code Online (Sandbox Code Playgroud)
然后你的路线应该是这样的:
const routes = [
{
path: '',
component: MainComponent,
children: [
{
path: '',
component: DummyComponent
},
// should be rendered as a CHILD of my MainComponent .. !!
{
path: 'lazy',
loadChildren: 'src/lazy/lazy.module#LazyModule'
}
]
}
];
Run Code Online (Sandbox Code Playgroud)
请注意,loadChildren路径从src现在开始.
对于src/lazy/lazy.module.ts:您应该定义您的路由(因为它是子模块所需的)但是您的路由应该为空,因为它们将以其父路由为后缀.(这里:'/ lazy').
所以,如果你把:
const routes = [
{
path: 'lazy',
component: LazyComponent
}
];
Run Code Online (Sandbox Code Playgroud)
您希望匹配/lazy/lazy使用您的惰性组件,这不是您想要的.
而是使用:
const routes = [
{
path: '',
component: LazyComponent
}
]
Run Code Online (Sandbox Code Playgroud)
这是工作的Plunkr:https://plnkr.co/edit/KdqKLokuAXcp5qecLslH ? p = preview
| 归档时间: |
|
| 查看次数: |
7925 次 |
| 最近记录: |