angular - Angular 静态注入器错误 - 没有 API 提供者
问题描述
我创建了一个 Angular 库项目,它有一个组件和一个 api (UserApi)(抽象类)。我有另一个使用这个库的项目。本项目还有一个实现库的api的服务(UserService实现UserApi)。
在我的项目模块文件中,我使用以下代码添加了提供程序。
{ provide: UserApi, useExisting: UserService }
现在,有两种方法可以为 UserApi 提供导入语句。
import { UserApi } from 'mylibrary';
或者
import { UserApi } from 'projects/mylibrary/src/public_api';
第一个是正确的方法。但是,当我使用第一次导入时它不起作用。当我使用第二次导入时它可以工作。但我不能用第二行发布我的代码。经过进一步检查,我发现当我从发布的库中访问 UserApi 时,它是通过定义文件访问的。
代码就像
import { Observable } from 'rxjs/Observable';
export declare abstract class UserApi {
abstract getConfigName(): Observable<string>;
}
在我的原始代码中,我没有'declare'关键字,而发布的代码有它。这就是我的项目无法使用提供的服务的原因。
如何解决这个问题?
更新: 来自 public_api 的代码
`
export * from './lib/user-shared.service';
export * from './lib/user-shared.component';
export * from './lib/user-shared.module';
export * from './lib/component/usermanager.component';
export * from './lib/coreapi/userapi';
`
解决方案
推荐阅读
- hbase - HBase 压缩如何影响客户端?
- azure - 如何将存储在 azure 存储帐户中的 csv 文件读入 azure psql
- c++ - 在 C++ 中检测带有零除异常的调试器
- java - done() 函数返回 null ParseObject
- unit-testing - 无法在 Junit 4 中导入 @WithAnonymousUser
- javascript - jquery如何获取ID和Title
- ios - 一般问题,有什么建议吗?
- html - 使滚动成为元素的最佳方法
- twitter-bootstrap - Bootstrap 3 当列高增加时推动整行
- c++ - 任务:需要 OpenMP 指令名称