我希望创建一个共享的Angular(7.2.15)库,并且仅公开我正在用作public_api.ts
中的接口的抽象类。但是,我总是遇到说Cannot find module './lib/my-module/my.service
的错误。
这样做的原因是,我需要一个单例服务来记录库组件中的事件,并通过EventEmitter
将其提供给外部应用程序。我只希望应用程序本身有权访问EventEmitter
,而不希望服务中的其他方法。所以我这样创建了我的服务:
my.service.ts
@Injectable()
export class MyService implements AppInterface, LibraryInterface {
private _events: Subject<string>
public getEventObservable (): Observable<string> {
return this._events.asObservable()
}
public addEvent (eventCode: string): void {
this._events.next(eventCode)
}
}
app-interface.ts
export abstract class AppInterface {
public abstract getEventObservable (): Observable<string>
}
library-interface.ts
export abstract class LibraryInterface {
public abstract addEvent (eventCode: string): void
}
我希望在我的库中的模块中提供服务,例如:{ provide: AppInterface, useClass: MyService }
,{ provide: LibraryInterface, useClass: MyService }
。但是,如果我在AppInterface
中导出的模块中提供public_api.ts
,则要求我同时导出public_api.ts
中的接口和服务,否则我将从第一段中得到错误。我只希望使用我的媒体库的应用能够导入界面,而不是服务。
如果我从不在任何地方提供AppInterface
,并且在LibraryInterface
中未导出的模块中提供public_api.ts
,那么我似乎无法解决另外一个皱纹,我仍然遇到错误。不知道为什么会期望我提供从未提供给应用程序的内部服务...