Angular 2最终版本 - ngModule无法识别共享组件

时间:2016-10-06 11:47:11

标签: angular typescript frontend ng-modules

我遇到了ngModule和我的组件的配置问题,运行最终发布的Angular 2版本。

这就是我所拥有的:

//PageHeaderModule

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { PageHeaderComponent } from './index';


@NgModule({
  imports: [CommonModule],
  declarations: [PageHeaderComponent]
})


export class PageHeaderModule { }
//Shared Module

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';

import { Routes, RouterModule } from '@angular/router';

import { HeaderComponent, SideBarComponent, BurgerMenuComponent, FooterComponent, InnerSpinnerComponent, PageHeaderComponent  } from "./components/index";
import { UniqueNameValidationByList } from "./directives/index";
import { LowerCasePipe, WhitespacePipe } from "./pipes/index";

@NgModule({
    imports: [CommonModule, RouterModule],
    declarations: [
        PageHeaderComponent,
        HeaderComponent,
        SideBarComponent,
        BurgerMenuComponent,
        FooterComponent,
        InnerSpinnerComponent,
        UniqueNameValidationByList,
        LowerCasePipe, WhitespacePipe
    ],
    exports: [
        PageHeaderComponent,
        HeaderComponent,
        SideBarComponent,
        BurgerMenuComponent,
        FooterComponent,
        InnerSpinnerComponent,
        UniqueNameValidationByList,
        LowerCasePipe, WhitespacePipe
    ],
})

export class SharedModule { }
//AppModule 

import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { Routes, RouterModule } from '@angular/router';
import { LocationStrategy, HashLocationStrategy } from '@angular/common';

import { routing, appRoutes }  from './app.routes';
import { AppComponent }   from './app.component';


import { BillingModule }  from './billing/billing.module';
import { CustomersModule }  from './customers/customers.module';
import { DashboardModule }  from './dashboard/dashboard.module';
import { DevicesModule }  from './devices/devices.module';
import { GroupsModule }  from './groups/groups.module';
import { ProductsModule }  from './products/products.module';
import { ReportingModule }  from './reporting/reporting.module';
import { LoginModule }  from './login/login.module';

import { SharedModule } from "./shared/shared.module";


import { SideBarService } from "./shared/components/index";
import { SignalRService, CountriesService } from "./shared/services/index";


@NgModule({
    imports: [BrowserModule,
        RouterModule.forRoot(appRoutes, { useHash: true }),
        routing,
        SharedModule,
        BillingModule,
        CustomersModule,
        DashboardModule,
        DevicesModule,
        GroupsModule,
        ProductsModule,
        ReportingModule,
        LoginModule
    ],
    declarations: [AppComponent],
    providers: [{ provide: LocationStrategy, useClass: HashLocationStrategy },
        SideBarService,
        SignalRService,
        CountriesService],
    bootstrap: [AppComponent],
}) 

export class AppModule { }

注意这里的两件事:

1)我没有使用页眉模块,因为我认为sharedModule应该关注所有这些共享组件,而是逐个创建,但我不确定。

2)我只是在共享模块中使用'exports',而不是在我的应用程序中的任何其他模块中使用

我得到的错误就是这个:

enter image description here

我一直在尝试很多东西,但似乎没有什么可以解决我的问题,我真的很感激你能提供的任何帮助。

如果需要更多信息,请告诉我。

由于

1 个答案:

答案 0 :(得分:0)

我不确定哪个模块正在使用PageHeaderComponent,但您需要了解您需要使用其中的组件在实际模块中导入SharedModule,而不是在我的根模块中导入python2.7 -m pip install pyopenssl pyasn1 ndg-httpsclient #39;猜测就是你正在做的事情。

我可以看到为什么你认为这样可行,因为这是模块为提供者工作的方式(你在根模块中导入一个带有提供者的模块,并且可以在子模块中从中注入提供者)

这是我在有角度的文档中发现的一部分,我希望对此有所帮助:

  

模块不会继承对其他模块中声明的组件,指令或管道的访问权限。 AppModule导入的内容与ContactModule无关,反之亦然。在ContactComponent可以与[(ngModel)]绑定之前,其ContactModule必须导入FormsModule。