Ngrx 数据 - 扩展 DefaultDataService<T>
Ngrx Data - extending DefaultDataService<T>
我正在尝试扩展 ngrx/data DefaultDataService 并覆盖一些方法。
我必须在方法中更改的是 entityUrl,我必须发送一个 HttpParam(告诉拦截器应该为特定的 Http 请求使用哪个 BE 服务)。
所以我重写了 getAll 方法,如下所示:
@Injectable()
export class GeneralFilterDataDirectorateService extends DefaultDataService<IDropDown> {
constructor(
http: HttpClient,
httpUrlGenerator: HttpUrlGenerator
) {
super('Directorate', http, httpUrlGenerator);
}
getAll(): Observable<Array<IDropDown>> {
return this.http
.get<Array<IDropDown>>(`url`,
{ params: new CustomHttpParams(URL_TYPES.COMMON) })
}
}
但是它触发了 Http 请求,它不会触发任何 ngrx 事件。 (数据已收到,但未存储在 ngrx 存储中)
此 Udemy 培训中的实现有效 "NgRx (with NgRx Data) - The Complete Guide",但不适合我。
有人知道问题出在哪里吗?
找到问题。
直接调用了 GeneralFilterDataDirectorateService.GetAll(),而不是通过 EntityCollectionServiceBase 服务。
正确的调用链是:
Component/Service => EntityCollectionServiceBase => DefaultDataService
我正在尝试扩展 ngrx/data DefaultDataService 并覆盖一些方法。 我必须在方法中更改的是 entityUrl,我必须发送一个 HttpParam(告诉拦截器应该为特定的 Http 请求使用哪个 BE 服务)。
所以我重写了 getAll 方法,如下所示:
@Injectable()
export class GeneralFilterDataDirectorateService extends DefaultDataService<IDropDown> {
constructor(
http: HttpClient,
httpUrlGenerator: HttpUrlGenerator
) {
super('Directorate', http, httpUrlGenerator);
}
getAll(): Observable<Array<IDropDown>> {
return this.http
.get<Array<IDropDown>>(`url`,
{ params: new CustomHttpParams(URL_TYPES.COMMON) })
}
}
但是它触发了 Http 请求,它不会触发任何 ngrx 事件。 (数据已收到,但未存储在 ngrx 存储中)
此 Udemy 培训中的实现有效 "NgRx (with NgRx Data) - The Complete Guide",但不适合我。
有人知道问题出在哪里吗?
找到问题。
直接调用了 GeneralFilterDataDirectorateService.GetAll(),而不是通过 EntityCollectionServiceBase 服务。
正确的调用链是: Component/Service => EntityCollectionServiceBase => DefaultDataService