我的目标是在单独的Angular工作区/代码存储库中创建Angular库,以服务外部Angular项目。 我想适当地组织此活动,因为该生态系统将持续很长时间并且会扩展。
到目前为止,我已经能够通过导出主机模块来暴露组件,并使用前端项目中的模板使用其标签。 现在,我需要直接从路由中使用其中的某些组件,然后需要在模块/路由类中显式导入每个组件。
为此,我需要从库中导出组件,而这正是我一直在努力的地方。当我尝试从模块类中导出它们时,没有任何错误,但是它们没有公开公开为类型(但是在导入lib模块时,我可以从模板中使用它们的标签)。唯一公开的类型是:
哪个是从我的lib项目中的文件“ public_api.ts”导出的。
export * from './lib/my-lib.service';
export * from './lib/my-lib.component';
export * from './lib/my-lib.module';
好吧,然后我认为将导出添加到该文件中以查找缺少的组件将达到目的,但事实并非如此。我在构建时遇到此错误
Cannot determine the module for class MyComponent in [path]! Add MyComponent to the NgModule to fix it.
知道组件在模块中 报关和出口:
@NgModule({
imports: [ ],
declarations: [ [ProjectName]Component, MyFirstComponent, MySecondComponent],
exports: [ [ProjectName]Component, MyFirstComponent, MySecondComponent ],
})
答案 0 :(得分:0)
我在写问题时找到了解决方案..呵呵。
所以我发布是为了帮助别人。
我只是在模块定义中缺少CommonModule导入:
import { CommonModule } from '@angular/common';
和
@NgModule({
imports: [ CommonModule ], // <-- add this
declarations: [ [ProjectName]Component, MyFirstComponent, MySecondComponent],
exports: [ [ProjectName]Component, MyFirstComponent, MySecondComponent ],
})
我使用Angular CLI 6创建库的节点如下:
ng generate library my-library --prefix ml
结果是,CommonModule没有导入到模块定义中。我本来希望语句作为库应该承载的比根类更多。