Dav*_*han 11 mocking angular-cli angular
下面的代码可以根据不同的Angular-cli环境变量有条件地加载模拟服务.然而,它具有副作用,即模拟服务被构建到最终的转码和缩小的输出文件中.
有没有更好的方法来完成angular2中的延迟加载模块?
app.module.ts:
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 {environment} from "../environments/environment";
import {XService} from "./xxx.service";
import {XMockService} from "./xxx-mock.service";
let importedModules: Array<any> = [
XService
];
if (environment.mock) {
importedModules.push(
{provide: XService, useClass: XMockService}
);
} else {
importedModules.push(
XService
);
}
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule
],
providers: importedModules,
bootstrap: [AppComponent]
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)
您可以尝试类似的方法。
主要
platformBrowserDynamic().bootstrapModule(RootModule);
Run Code Online (Sandbox Code Playgroud)
root.module.ts
@NgModule({
imports: [
LandingModule,
UserModule
],
entryComponents: [PageComponent, UserComponent],
})
export class RootModule {
constructor(private router: Router .....) {
}
ngDoBootstrap(ref: ApplicationRef) {
const isUserPageRequested = this.shouldGoToUser();
if (isUserPageRequested) {
this.router.resetConfig(userRoutes);
ref.bootstrap(UserComponent);
} else {
ref.bootstrap(PageComponent);
}
}
}
Run Code Online (Sandbox Code Playgroud)
PageComponent在声明LandingModule和UserComponent在声明UserModule。这样,可以在使用aot编译时在模块正常工作时有条件地加载模块。
| 归档时间: |
|
| 查看次数: |
3335 次 |
| 最近记录: |