Я расширил DefaultDataService следующим образом:
@Injectable()
export class DidDocumentDataService extends DefaultDataService<DidDocument> {
constructor(http: HttpClient, httpUrlGenerator: HttpUrlGenerator) {
super("DidDocument", http, httpUrlGenerator, defaultDataServiceConfig);
}
getById(): Observable<DidDocument> {
return this.http.get("/identifiers").pipe(
map(res => res["didDocument"])
);
}
}
app-store.module.ts
настроен так:
// this used to work before overriting the DefaultDataService
export const defaultDataServiceConfig: DefaultDataServiceConfig = {
root: `${HOST}/1.0/`
};
@NgModule({
imports: [
EntityDataModule.forRoot(entityConfig),
... // other store related imports
],
providers: [
DidDocumentDataService,
{ provide: DefaultDataServiceConfig, useValue: defaultDataServiceConfig }
],
declarations: [StoreComponent],
exports: [StoreComponent]
})
export class AppStoreModule {
constructor(
private entityDataService: EntityDataService,
private didDocService: DidDocumentDataService
) {
this.entityDataService.registerService("DidDocument", this.didDocService);
}
}
Перед расширением DefaultDataService использовался defaultDataServiceConfig
и запросы были вызваны на заказ root
. Теперь каждый запрос нажимает localhost
(кажется, просто использует текущий хост).
AppStoreModule
не является модулем с отложенной загрузкой и загружается в AppModule
. Компонент, который вызывает запрос, является StoreComponent
. Мое первое предположение состоит в том, что что-то происходит не в том порядке, в котором я этого ожидаю.
Когда CustomDataService
с созданным CustomConfiguration
создается и перезаписывает ли Служба работу только в лениво загруженных модулях?
Решение
Я устанавливаю абсолютный URL в httpClient напрямую, а также передаю идентификатор в метод getById
:
getById(id: string): Observable<DidDocument> {
return this.http.get(`${HOST}/1.0/identifiers/${id}`).pipe(
map(res => res["didDocument"])
);
}