我对Angular2很新,我试图修改模板。 基本上,默认情况下,所有视图都嵌套在带有Header,Footer和TopNavbarModule的模板中。
我试图避免为某些视图组件导入这些模块。
所以我构建了我的blank.component
并将其导入app.module
,但我仍在导入app.module
中我不想要的3个视图模块,否则他们不会完全导入(对于"空白"页面,或"其他"页面)。
我想也许我必须在NgModule
中声明另一个app.module
或创建一个单独的blank.module - 任何想法?
app.module
import {NgModule} from '@angular/core'
import {RouterModule} from "@angular/router";
import {AppComponent} from "./app.component";
import {BlankComponent} from "./blank.component";
import {BrowserModule} from "@angular/platform-browser";
import {HttpModule} from "@angular/http";
import {ROUTES} from "./app.routes";
import {LocationStrategy, HashLocationStrategy} from '@angular/common';
// App views
import {MainViewModule} from "../views/main-view/main-view.module";
import {DashboardViewModule} from "../views/dashboard-view/dashboard-view.module";
// App modules/components
import {NavigationModule} from "../views/common/navigation/navigation.module";
import {FooterModule} from "../views/common/footer/footer.module";
import {TopnavbarModule} from "../views/common/topnavbar/topnavbar.module";
import {LoginViewModule} from "../views/login-view/login-view.module";
@NgModule({
declarations: [AppComponent, BlankComponent],
imports : [
// Angular modules
BrowserModule,
HttpModule,
// Views
MainViewModule,
DashboardViewModule,
LoginViewModule,
// Modules
NavigationModule,
FooterModule,
TopnavbarModule,
RouterModule.forRoot(ROUTES)
],
providers : [{provide: LocationStrategy, useClass: HashLocationStrategy}],
bootstrap : [AppComponent]
})
export class AppModule {}
blank.component
import {Component} from '@angular/core';
import { correctHeight, detectBody } from './app.helpers';
// Core vendor styles
import '../../node_modules/bootstrap/dist/css/bootstrap.min.css'
import '../../node_modules/font-awesome/css/font-awesome.css'
import '../../node_modules/animate.css/animate.min.css'
// Main Inspinia CSS files
import '../../src/assets/styles/style.css'
declare var jQuery:any;
@Component({
selector : 'blank',
templateUrl: 'blank.template.html',
})
export class BlankComponent {
}
答案 0 :(得分:0)
听起来MainViewModule
,DasboardViewModule
和LoginViewModule
是功能模块,所以我可能会像下面这样构建它:
AppModule
HomeModule
- 我在单个模块中定义了导航,topnavbar和页脚组件,然后将其导入AppModule
。如果你愿意,你可以保留3个单独的模块,但我不确定你从中获得了什么。
...
const appRoute: Routes = [
path: '',
component: BlankComponent,
children: [
{
path: 'main',
loadChildren: 'app/views/main-view/main-view.module#MainViewModule'
},
{
path: 'login',
loadChildren: 'app/views/login-view/login-view.module#LoginViewModule'
}
{
path: 'dashboard',
loadChildren: 'app/views/dashboard-view/dashboard-view.module#DashboardViewModule'
}
]
]
BlankComponent的模板(在app.module中定义)将是使用top-nav / footer组件并提供router-outlet
的唯一位置,其中' view'会显示。像这样:
<app-top-nav></app-top-nav>
<router-outlet></router-outlet>
<app-footer></app-footer>
AppModule
导入最小:
@NgModule({
imports: [
//Angular modules
BrowserModule,
HttpModule,
CoreModule, //your module containing services (see module guidance)
SharedModule, //your modules with commons pipes, directives etc (see module guidance)
HomeModule, //your module contains the navbar, footer etc
routing
],
providers: [
appRoutingProviders,
],
declarations: [AppComponent, BlankComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
如果功能(视图)模块使用公共组件以及任何Angular模块依赖项,则它们将仅导入SharedModule
。我通常有SharedModule
重新导出常见的Angular依赖项,例如表单模块,因此SharedModule
的消费者不需要记住每次导入它们。
不确定这是否与您的想法完全相同,但希望它有所帮助!