使用角度为4的其他模块封装在模块中的组件

时间:2017-04-07 22:10:53

标签: javascript angular angular-components angular-module ng-modules

我正在开发一个角度4应用程序,我有两个模块,第一个模块封装了我需要在其他模块中使用的一些功能。例如,我有第一个名为SRModule的模块,我已经导入了SrCrComponent组件:

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

// module imports
import { SrCrComponent} from './sr-cr';

@NgModule({
  imports: [
    CommonModule
  ],
  exports: [
    SrCrComponent
  ],
  declarations: [
    SrCrComponent
  ]
})
export class SRModule {}

我想在另一个模块的其他组件中使用SrCrComponent,但我可以弄清楚如何使用。

在我的第二个模块ReportsModule中,我已经导入了SRModule

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { CPComponent } from './cp/cp.component';
import { SRModule } from "../sr-module/sr.module";

@NgModule({
  imports: [
    CommonModule,
    SRModule
  ],
  declarations: [
    CPComponent
  ]
})
export class ReportsModule { }

我的问题是,如何在ReportsModule上使用CPComponent中声明的SrCrComponent组件?

这是我的CPComponent ts文件:

import { Component, OnInit } from '@angular/core';
@Component({
  selector: 'app-chart-period',
  templateUrl: './chart-period.component.html',
  styleUrls: ['./chart-period.component.css']
})
export class CPComponent implements OnInit {

  constructor() { }

  ngOnInit() {
  }
}

在我的CPComponent的html中,我有一个sr-gg组件但不起作用,

<h2> Bar Chart</h2>
<sr-gg></sr-gg>

在ReportsModule中显然是'sr-g' is not a known element,在fac中,这是控制台向我展示的错误,但我不知道我需要声明的位置,或者在导入SrCrComponen时它应该继承。

1 个答案:

答案 0 :(得分:2)

ReportsModule导入SRModule,从而导出SRModule中导出的所有内容:[]在您的情况下是SrCrComponent。我假设CpComponent应该是ReportsModule的一部分,即在声明中应该提到CpComponent:[]对于ReportsModule。你提到sr-gg是一个组件,所以如果它应该在SrModule中声明,那么导出应该看起来像export:[SrCrComponent,SrGGComponent]

 @NgModule({
      imports: [
         CommonModule
      ],
      exports: [
         SrCrComponent, SrGGComponent
      ],
      declarations: [
        SrCrComponent, SrGGComponent
      ]
})
export class SRModule {}

    @NgModule({
      imports: [
        CommonModule,
        SRModule
      ],
      declarations: [
        ReportsComponent,
        ChartPeriodComponent,
        ChartSegmentationComponent,
        CpComponent
      ]

})

export class ReportsModule { }

然后它应该工作