如何在angular2中使用sharedModule?
how to use sharedModule in angular2?
我有一个 angular2 组件,我想在多个模块之间共享它。
所以我在下面写了 sharedModule ,
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import {GenericComponent} from './generic/generic.component';
@NgModule({
imports: [ BrowserModule ],
declarations: [ GenericComponent ],
exports: [ GenericComponent ]
})
export class SharedModule { }
然后我将这个 sharedModule 添加到多个模块,如下所示:
app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import {SharedModule} from './shared.module';
import { AppComponent } from './app.component';
@NgModule({
imports: [ BrowserModule,SharedModule ],
declarations: [ AppComponent ],
exports: [ AppComponent ],
bootstrap: [AppComponent]
})
export class AppModule { }
我也同样将 sharedModule 添加到 generic.module.ts,
generic.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import {SharedModule} from './shared.module';
@NgModule({
imports: [ BrowserModule,SharedModule ],
declarations: [ //.. here I have added all the components that generic uses ]
})
export class GenericModule { }
但是当我尝试在 generic.module.ts
的组件中使用通用组件时出现以下错误
Unexpected value 'undefined' imported by the module 'GenericModule'
您不能在 featureModule 中使用 BroswerModule。因此,请确保使用 CommonModule 而不是 BrowswerModule.
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import {SharedModule} from './shared.module';
@NgModule({
imports: [ CommonModule ,SharedModule ],
declarations: [ //.. here I have added all the components that generic uses ],
exports: [ CommonModule]
})
export class GenericModule { }
这是我的应用程序使用共享模块的代码:
应用程序模块:
import { AboutModule } from './about/about.module';
import { SharedModule } from './shared/shared.module';
import { Menubar, MenuItem } from 'primeng/primeng';
@NgModule({
imports: [ BrowserModule, RouterModule.forRoot(appRoutes), SharedModule.forRoot(),
HomeModule ],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ],
providers: [ appRoutingProviders ]
})
export class AppModule {}
主页模块:
import { SharedModule } from '../shared/shared.module';
import {routing} from './home.routing'
@NgModule({
imports: [ SharedModule, routing],
declarations: [ HomeComponent, LoginComponent, RegisterComponent, VerifyComponent,
VerifyEmailComponent, ForgotComponent, ForgotVerifyComponent,
ChangeComponent, ChallengeComponent, LogoutComponent ],
bootstrap: [ HomeComponent ],
providers: [ ]
})
export class HomeModule {}
以及共享模块:
@NgModule({
imports: [CommonModule, RouterModule, MenubarModule, GalleriaModule, InputTextModule, PanelModule, ButtonModule,
DropdownModule, DialogModule, AccordionModule, CalendarModule, SelectButtonModule, CheckboxModule,
ProgressBarModule, DataTableModule],
declarations: [ ErrorMessagesComponent, FoodDashboardComponent ],
exports: [ CommonModule, ReactiveFormsModule, HttpModule, RouterModule,
MenubarModule, GalleriaModule, InputTextModule, PanelModule, ButtonModule, DropdownModule, DialogModule, AccordionModule, CalendarModule,
SelectButtonModule, CheckboxModule, DataTableModule, ProgressBarModule, ErrorMessagesComponent, FoodDashboardComponent ]
})
export class SharedModule {
//
static forRoot(): ModuleWithProviders {
return {
ngModule: SharedModule,
providers: [SettingsService, AppMenuService, AuthorizationService, LoginService, RegisterService, ThemeService, ValidationService,
NutritionixService, AuthGuardService, CalculationService, ChallengeService ]
};
}
}
我的应用程序中有 20 多个模块,我到处都使用共享模块。这很好用。希望对你有帮助。
我有一个 angular2 组件,我想在多个模块之间共享它。
所以我在下面写了 sharedModule ,
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import {GenericComponent} from './generic/generic.component';
@NgModule({
imports: [ BrowserModule ],
declarations: [ GenericComponent ],
exports: [ GenericComponent ]
})
export class SharedModule { }
然后我将这个 sharedModule 添加到多个模块,如下所示:
app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import {SharedModule} from './shared.module';
import { AppComponent } from './app.component';
@NgModule({
imports: [ BrowserModule,SharedModule ],
declarations: [ AppComponent ],
exports: [ AppComponent ],
bootstrap: [AppComponent]
})
export class AppModule { }
我也同样将 sharedModule 添加到 generic.module.ts,
generic.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import {SharedModule} from './shared.module';
@NgModule({
imports: [ BrowserModule,SharedModule ],
declarations: [ //.. here I have added all the components that generic uses ]
})
export class GenericModule { }
但是当我尝试在 generic.module.ts
的组件中使用通用组件时出现以下错误Unexpected value 'undefined' imported by the module 'GenericModule'
您不能在 featureModule 中使用 BroswerModule。因此,请确保使用 CommonModule 而不是 BrowswerModule.
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import {SharedModule} from './shared.module';
@NgModule({
imports: [ CommonModule ,SharedModule ],
declarations: [ //.. here I have added all the components that generic uses ],
exports: [ CommonModule]
})
export class GenericModule { }
这是我的应用程序使用共享模块的代码:
应用程序模块:
import { AboutModule } from './about/about.module';
import { SharedModule } from './shared/shared.module';
import { Menubar, MenuItem } from 'primeng/primeng';
@NgModule({
imports: [ BrowserModule, RouterModule.forRoot(appRoutes), SharedModule.forRoot(),
HomeModule ],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ],
providers: [ appRoutingProviders ]
})
export class AppModule {}
主页模块:
import { SharedModule } from '../shared/shared.module';
import {routing} from './home.routing'
@NgModule({
imports: [ SharedModule, routing],
declarations: [ HomeComponent, LoginComponent, RegisterComponent, VerifyComponent,
VerifyEmailComponent, ForgotComponent, ForgotVerifyComponent,
ChangeComponent, ChallengeComponent, LogoutComponent ],
bootstrap: [ HomeComponent ],
providers: [ ]
})
export class HomeModule {}
以及共享模块:
@NgModule({
imports: [CommonModule, RouterModule, MenubarModule, GalleriaModule, InputTextModule, PanelModule, ButtonModule,
DropdownModule, DialogModule, AccordionModule, CalendarModule, SelectButtonModule, CheckboxModule,
ProgressBarModule, DataTableModule],
declarations: [ ErrorMessagesComponent, FoodDashboardComponent ],
exports: [ CommonModule, ReactiveFormsModule, HttpModule, RouterModule,
MenubarModule, GalleriaModule, InputTextModule, PanelModule, ButtonModule, DropdownModule, DialogModule, AccordionModule, CalendarModule,
SelectButtonModule, CheckboxModule, DataTableModule, ProgressBarModule, ErrorMessagesComponent, FoodDashboardComponent ]
})
export class SharedModule {
//
static forRoot(): ModuleWithProviders {
return {
ngModule: SharedModule,
providers: [SettingsService, AppMenuService, AuthorizationService, LoginService, RegisterService, ThemeService, ValidationService,
NutritionixService, AuthGuardService, CalculationService, ChallengeService ]
};
}
}
我的应用程序中有 20 多个模块,我到处都使用共享模块。这很好用。希望对你有帮助。