繁体   English   中英

如何从自定义Angular库导入特征模块?

[英]How can I import a feature module from an custom Angular library?

此问题类似,我构建了一个具有多个功能模块的自定义Angular库 (使用Angular CLI 7.2.0 ):

MyLibraryModule
  FeatureModule1
    SomeComponent1
  FeatureModule2
    SomeComponent2

我只想将一个功能模块导入到我的主应用程序中,就像我们可以使用Angular Material模块一样( import { MatButtonModule } from '@angular/material'; ):

import { FeatureModule1 } from 'my-library';
...
@NgModule({
  imports: [
    ...,
    FeatureModule1,
  ]
})
...

这导致以下错误(在构建主项目期间):

ERROR in : Unexpected value 'FeatureModule1 in ./node_modules/my-library/my-library.d.ts'
imported by the module 'AppModule in ./src/app/app.module.ts'.
Please add a @NgModule annotation.

当我将库模块( import { MyLibraryModule } from 'my-library'; )导入主应用程序时,一切正常。

my-library.module.ts看起来像这样:

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

import { FeatureModule1 } from './feature-module-1/feature-module-1.module';
import { FeatureModule2 } from './feature-module-2/feature-module-2.module';

@NgModule({
  imports: [ FeatureModule1, FeatureModule2 ],
  exports: [ FeatureModule1, FeatureModule2 ],
})
export class MyLibraryModule{ }

我的public_api.ts导出所有模块。

我认为这与打包过程有关,因为在我的测试项目(与库位于同一文件夹中)中,此工作没有任何问题。

我已经尝试过通过@angular/material修改构建过程 ,但是看来,他们的做法与官方方式有所不同。

问题是,我用桶的文件在我的功能模块( index.ts ,我在我的原装进口) public_api.ts是这样的:

import * from './feature-module-1';

但作为描述在这里 ,你必须直接在每桶文件指向。 否则,软件包的.d.ts文件不包含所有导出。 因此,我的public_api.ts的以下行解决了该问题:

import * from './feature-module-1/index';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM