angular - 如何将服务从 Angular 库注入到另一个 Angular 库
问题描述
我必须在项目文件夹中添加角度库
ng generate library foo
ng generate library bar
我的 foo 库包含一个包含库文件的 public_api.ts
export * from './lib/foo.service';
我在 foo 中有一个服务定义为抽象类
export abstract class FooService {}
我想在 Bar 服务中扩展 fooService
import { FooService } from 'projects/foo/src/public_api';
export class BarService extends FooService{}
我收到了这个错误
BUILD ERROR
error TS6059: File '/projects/foo/src/lib/foo.service.ts' is not under 'rootDir' 'projects/bar/src'. 'rootDir' is expected to contain all source files.
error TS6059: File '/projects/foo/src/public_api.ts' is not under 'rootDir' '//projects/bar/src'. 'rootDir' is expected to contain all source files.
如何从 bar 获取我的 foo 库?
解决方案
尝试将库视为单独的项目(即使它们位于单个源代码树中)。
如何使您的方法有效:(从头开始)
ng new libs-test
ng generate library foo
ng generate library bar
ng build foo
npm i foo@file:dist/foo
// 这会将您的应用程序项目的本地依赖项添加到 foo 库- 打开库的package.json,
bar
添加"foo": "latest"
依赖:
{ “名称”:“酒吧”, “版本”:“0.0.1”, “对等依赖”:{ "@angular/common": "^7.2.0", "@angular/core": "^7.2.0", "foo": "latest" // 添加这一行 } }
- 去图书馆
BarService
里面:bar
从'@angular/core'导入{可注射}; 从 'foo' 导入 { FooService }; @可注射({ 提供在:“根” }) 导出类 BarService 扩展 FooService{ 构造函数(){ 极好的(); } }
请注意非亲属import { FooService } from 'foo';
- 建立你的
bar
图书馆:ng build bar
而已!您的bar
库正确使用了该foo
功能。
如果您想bar
在您的应用程序中使用 's 服务,只需执行以下操作:
ng build bar
npm i bar@file:dist/bar
- 在你的
AppComponent
:
从'@angular/core'导入{组件}; 从“酒吧”导入 { BarService }; @零件({ 选择器:'应用程序根', templateUrl: './app.component.html', styleUrls: ['./app.component.less'] }) 导出类 AppComponent { 标题 = '库测试'; 构造函数(私人 barService:BarService){ } }
- 确保您的应用程序正在正确构建:
ng build --aot
推荐阅读
- pandas - 如何比较此数据框中的开盘价和收盘价变量?
- c++ - Qt:如何立即将数据写入 QProcess?
- solr - 无法在 solr 中使用 unicode 字符索引文件
- java - 如何使用 Glide android 从 facebook 个人资料加载图像?
- firebase - Cloud FireStore 具有相同 iD 的多个文档,即用户 UID
- r - 将 plot_ly 表从 .JSON 导入到 R
- javascript - toggleClass() 不是函数,但没有它手风琴不起作用
- java - 如何打印最后带有数字的语句,但将数字从右到左设置为一定长度?
- react-native - React-navigation 5 - Drawer Navigator:更改 Drawer 菜单图标的样式
- javascript - 显示的列与列定义的顺序不同 AG Grid React