首页 文章

在Angular2中构建私有模块

提问于
浏览
2

我尝试创建自己的模块,并在下面的app模块中导入它 .

下面的代码很好,但我想展示一个例子,然后在下面提出我的问题 .

假设我的文件夹结构如下: - `

├── app
│   ├── app.component.ts
│   └── app.module.ts
├── credit-card
│   ├── credit-card-mask.pipe.ts
│   ├── credit-card.component.ts
│   ├── credit-card.module.ts
│   └── credit-card.service.ts
├── index.html
└── main.ts

`

My credit card module is like below:-

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

import { CreditCardMaskPipe } from './credit-card-mask.pipe';
import { CreditCardService } from './credit-card.service';
import { CreditCardComponent } from './credit-card.component';

@NgModule({
  imports: [CommonModule],
  declarations: [
    CreditCardMaskPipe,
    CreditCardComponent
  ],
  providers: [CreditCardService],
  exports: [CreditCardComponent]
})
export class CreditCardModule {}

我的app模块如下: -

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

import { CreditCardModule } from '../credit-card/credit-card.module';
import { AppComponent } from './app.component';

@NgModule({
  imports: [
    BrowserModule,
    CreditCardModule
  ],
  declarations: [AppComponent],
  bootstrap: [AppComponent]
})
export class AppModule { }

我试图通过互联网搜索在Angular2中创建私有模块但没有相关信息 .

与上面的模块不同,我现在需要在我的应用程序中实现一个私有模块 .

假设我希望我的信用卡模块是私有的,所以通过在课前删除导出词,CreditCardModule足以使我的模块变为私有?

如果我是对的,请告诉我 . 或者有没有其他方式,所以我的应用程序可以在angular2应用程序中拥有私有模块?

另外,我提到了页面https://angular.io/guide/ngmodule-faq

我该怎么出口?

不要导出以下内容:

  • 仅在此模块中声明的组件中需要的专用组件,指令和管道 . 如果你没有_t83690_吨导出它 .

  • 不可声明的对象,例如服务,函数,配置和实体模型 .

  • 仅由路由器或引导动态加载的组件 . 这样的输入组件永远不能在另一个组件中选择's template. While there'导出它们没有坏处,也没有任何好处 .

  • 纯粹的服务模块在重新导出HttpModule方面没有意义,因为它不是唯一的目的是将http服务提供者作为一个整体添加到应用程序中 .

但我不清楚 .

提前致谢 .

1 回答

  • 3

    我强烈建议你阅读这篇文章:

    以下是它的引用:

    Angular以类似于ES模块的方式介绍了模块封装的概念 . 它基本上意味着可声明的类型 - 组件,指令和管道 - 只能由在此模块内声明的组件使用 .

    重要的是要理解的是,没有服务封装,所以不要导入或导出它们 .

    与上面的模块不同,我现在需要在我的应用程序中实现一个私有模块 .

    没有私人模块这样的东西 . 但是,如上所述,您可以通过简单地不导出它来使声明类型对该模块是私有的 . 例如:

    AComponent is public since it's exported

    @NgModule({
      ...
      declarations: [AComponent],
      exports: [AComponent]           
    })
    export class AModule { }
    

    AComponent is private since it's not exported

    @NgModule({
      ...
      declarations: [AComponent]         
    })
    export class AModule { }
    

相关问题