【发布时间】:2017-10-06 05:33:32
【问题描述】:
我是 Angular 2 的新手,正在尝试延迟加载。我收到“RangeError:超出最大调用堆栈大小”的错误
我尝试了许多其他类似的问题,但对我没有任何帮助。以下是我的代码供您参考。让我知道这个问题。
// App Module
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
import { ROUTER_CONFIG } from './app.routing';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
ROUTER_CONFIG
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
// App Routing
import { RouterModule, Routes } from '@angular/router';
import { AppComponent } from './app.component';
const ROUTER_DATA: Routes = [
{ path:'home', component: AppComponent },
{ path:'lazy', loadChildren: './lazy/lazy.module#LazyModule' },
{ path:'', redirectTo:'home', pathMatch: 'full'}
];
export const ROUTER_CONFIG = RouterModule.forRoot(ROUTER_DATA);
//App Component
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'app works!';
}
// Lazy module
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { LazyComponent } from './lazy.component';
import { ROUTER_CONFIG } from './lazy.routing';
@NgModule({
declarations: [
LazyComponent
],
imports: [
CommonModule
],
providers: [],
bootstrap: [LazyComponent]
})
export class LazyModule { }
// lazy Routing
import { RouterModule, Routes } from '@angular/router';
import { LazyComponent } from './lazy.component';
const ROUTER_DATA: Routes = [
{ path:'', component: LazyComponent }
];
export const ROUTER_CONFIG = RouterModule.forRoot(ROUTER_DATA);
// lazy component
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-lazy',
templateUrl: './lazy.component.html',
styleUrls: ['./lazy.component.css']
})
export class LazyComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}
<!-- App HTML -->
<div [routerLink]="['/home']">Home</div>
<div [routerLink]="['/lazy']">Lazy</div>
<router-outlet></router-outlet>
<!-- lazy html -->
<p>
lazy works!
</p>
【问题讨论】:
-
你不需要在 LazyModule 中
bootstrap: [LazyComponent] -
还有一个查询,我们也可以延迟加载组件,或者模块是强制性的……如何在延迟组件之间传递数据?
-
用例是什么?在大多数情况下,我只是在路由中传递 entityId。组件从 db/sever 中获取相应的数据。如果是通用数据,那么您可以考虑为数据共享目的服务
标签: angular lazy-loading