如何创建一个通用的跨项目可重用角度组件

时间:2018-02-09 04:43:58

标签: angular typescript webpack import

假设以下项目结构:

回购

  • 项目A.
    • 的package.json
      • @角/芯
    • dashboard.component.ts
  • 项目B.
    • 的package.json
      • @角/芯
    • panel.component.ts
  • 常用文件夹
    • 的package.json
      • @角/芯
    • button.component.ts

每个目录都是他们自己的小项目,包括他们自己的依赖项。

我目前正在尝试使用常规模块导入导入项目A和项目B中的按钮组件。话虽这么说,我的导入确实回过头几步../../../common/button.component

为了在公共文件夹中声明一个按钮,我需要一个包含@ angular / core的node_modules文件夹,否则我不能使用import {Component} from '@angular/core'

现在所有设置看起来都很好并且功能正常,但是在使用ng serve启动我的应用程序时,我遇到以下问题:

  

错误在../common/node_modules/@angular/core/src/render3/ng_dev_mode.d.ts(9,11):错误TS2451:无法重新声明块范围变量'ngDevMode'。   node_modules/@angular/core/src/render3/ng_dev_mode.d.ts(9,11):错误TS2451:无法重新声明块范围变量'ngDevMode'。

如果我从公共模块中删除@angular/core并尝试再次运行,我会得到:

  

错误在../common/components/angular/common.modules.ts(1,30):错误TS2307:找不到模块'@ angular / common'。

哪个有意义,因为node_modules不再是公共项目的一部分。

我想知道如何解决这个问题。 我可以从ProjectA或ProjectB导入@ angular / core,但是这会打破对于公共文件夹没有依赖ProjectA和B的规则(但是可以依赖于公共项目)。

0 个答案:

没有答案