Angular 库依赖注入问题

问题描述 投票:0回答:1

我在准确理解我做错了什么方面遇到了一些困难,但我正在尝试拥有一个带有一些需要 DI 的服务的角度库,然后在应用程序中使用这些服务。

截至目前,我使用了新的 ng 应用程序和新的 ng lib,它们不在同一个根项目中。使用了所有官方命令:

ng new app
ng new libs --no-create-application
cd libs
ng g library test

从这个生成了

libs-lib.service.ts
的初始测试中,我复制了它并创建了一个新的
libs-lib2.service.ts
内容:

@Injectable({
  providedIn: 'root'
})
export class LibsLib2Service {

  constructor() { }
}

然后我修改了原来的以需要新的:

@Injectable({
  providedIn: 'root'
})
export class LibsLibService {

  constructor(private lib: LibsLib2Service) { }
}

此后我跑了:

ng build libs-lib
cd dist/libs
npm link

cd ../../../app/
npm link libs-lib

然后在这个应用程序中我添加了一个测试服务:

@Injectable({
  providedIn: 'root'
})
export class TestingService {

  constructor(private api: LibsLib2Service) { }
}

这工作得很好...但是如果我使用原来的(使用 DI ),如下所示:

@Injectable({
  providedIn: 'root'
})
export class TestingService {

  constructor(private api: LibsLibService) { }
}

然后我收到以下错误:

ERROR Error: NG0203: inject() must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used with 'EnvironmentInjector#runInContext'. Find more at https://angular.io/errors/NG0203

我还多次尝试将服务作为提供者添加到模块中并导入它们,但实际上没有成功。 我在这里做错了什么?

谢谢!

angular dependency-injection shared-libraries
1个回答
0
投票

“发现问题”或者更确切地说...找到问题根源,原因仍然超出我的理解能力。

无论如何,解决方案就是不要使用 npm 链接...... 我做了完全相同的事情,但我没有使用 npm 链接,而是使用了 yalc (https://www.npmjs.com/package/yalc),并且它在不到 2 分钟内就发挥了作用。

© www.soinside.com 2019 - 2024. All rights reserved.