angular2中一个模块引入另一个模块那么引入的这个模块所涉及的组件还需要引入吗?

感觉在一个模块的module中引入别的module后还要把这个引入的module所引入的组件都要重新import一次

阅读 19.8k
6 个回答

关于angular模块的问题很复杂,我暂且理解你想要定义一个公共模块,然后模块里面有一堆公用组件,这些组件可以在任意其他模块使用,那么这种情况下,你定义的公共模块必须要导出你所有隶属于这个模块的公共组件,在其他模块使用的时候不用导入这些公共组件,只需要导入公共模块即可,例如:
公共模块

// 公共模块
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { A } form 'a.component';
import { B } form 'b.component';
import { C } form 'c.component';

@NgModule({
  imports: [
    CommonModule,
  ],
  exports: [
    CommonModule,
    AComponent,
    BComponent,
    CComponent,
  ],
  declarations: [
    AComponent,
    BComponent,
    CComponent,
  ],
})
export class SharedModule {
}

调用模块


import { SharedModule } from './../shared/shared.module';
import { NgModule } from '@angular/core';
import { CallerComponent } from './caller.component';


@NgModule({
  imports: [
    CommonModule,
    SharedModule,
  ],
  declarations: [
   CallerComponent
  ],
  providers: []
})
export class MallModule { }

调用的组件

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-caller',
  template: `
    <p>{{title}}</p>
    <app-a />
    <app-c />
    <app-b />
`,
  styleUrls: []
})
export class CallerComponent implements OnInit {
  title:string;
  
  constructor() {
    this.title = 'caller';
  }

  ngOnInit() {
  }

}

不用啊,假如你引用了ionic的模块,ionic的组件你不是都能用了,难道还要把他的组件全import一遍吗

这个问题涉及到模块的作用域问题,一两句说不清楚的,可以参考这篇文章,讲的很详细

只要模块中声明和导出了相关组件,直接导入此模块即可使用组件。

新手上路,请多包涵

引入的时候一块把路由都给引进来了怎么办,可以只引入模块中的组件而不引入模块中的路由吗????

新手上路,请多包涵

你要用到被导入模块那些“元素”,把这些元素在被引入模块exports即可。

宣传栏