我创建了一个角度库项目,该项目具有一个组件和一个api(UserApi)(抽象类)。我还有另一个使用此库的项目。该项目还具有一个服务(UserService实现UserApi),该服务实现了库的api。
在我的项目模块文件中,我使用以下代码添加了提供程序。
{ 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';
`