【发布时间】:2017-01-12 06:44:06
【问题描述】:
我不知道如何为 angular2 编写 npm 模块。
尽管我找到了 2 篇教程(One、Two),但没有一篇介绍如何将 angular2 模块(@NgModule)实现为 npm 包。
我不明白的是,我什么时候需要注入像BrowserModule 这样的模块?我什至必须将它与我的模块一起注入,还是只注入指令就足够了?
到目前为止我的插件:
- https://github.com/yves-s/ng2-flexbox-grid/tree/develop
- https://www.npmjs.com/package/ng2-flexbox-grid
目前它是@btmorton 的angular2-grid RC6 的副本和更新
但我无法让它工作。
更新:
这是我的模块ng2-flexbox-grid.ts的当前状态
export * from './src/directives';
export * from './src/components';
export * from './src/interfaces';
import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {NgGrid, NgGridItem} from './src/directives';
const mapValuesToArray = (obj) => Object.keys(obj).map(key => obj[key]);
// const directives = mapValuesToArray(directiveItems);
export default {
directives: [NgGrid, NgGridItem]
}
@NgModule({
declarations: [],
imports: [
BrowserModule,
CommonModule
],
exports: [NgGrid, NgGridItem]
})
export class Ng2FlexboxGridModule {}
更新 - 解决方案
在@Clint 的帮助下,我可以把那个婴儿带回家。
可能最大的问题是我不知道@NgModule 究竟是如何工作的。如果我仔细阅读@NgModule docs
重要的部分是声明和导出模块指令。这样,您只需导入 FlexboxGridModule 即可使用它导出的指令。
导出:
import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core';
import {NgGrid, NgGridItem} from './src/directives';
@NgModule({
imports: [BrowserModule],
declarations: [NgGrid, NgGridItem],
exports: [NgGrid, NgGridItem]
})
export class FlexboxGridModule {}
导入:
import {NgModule} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import {AppComponent} from './app.component';
import {FlexboxGridModule} from "ng2-flexbox-grid";
@NgModule({
imports: [
BrowserModule,
FlexboxGridModule
],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule {}
【问题讨论】:
-
问题主体不是解决方案的地方。您可以提供您的解决方案作为答案并将其标记为最佳答案。