0

通常,当我想指定实体的 url 时,我有一个特定的 url,例如serverURL/heroes。但是现在我有一个案例,我想使用属于其他实体的实体。例如,假设我想使用英雄的武器。我的剑 http url 看起来像:serverURL/heroes/heroID/weapons。所以假设我需要添加新剑,我唯一的选择是将它添加到特定的英雄,所以我需要知道 heroID 和剑信息来做类似的事情:HTTP POSThttp.post('serverURL/heroes/heroID/weapons', swordObject);

目前,当我在 DefaultDataServiceConfig 的 entityHttpResourceUrls 中添加英雄 url 时。您可以在 stackblitz 上查看示例。转到 app->store->entity-> entity-store.module.ts。那是我通常指定网址的地方。

我该如何处理我的案件?如何获得子实体的动态网址?

更新

根据我在这个问题中的发现,ngrx-data 还不支持参数。

https://github.com/ngrx/platform/issues/1934

4

3 回答 3

3

就我而言,我创建了服务:

@Injectable()
export class OrganizationDataService extends DefaultDataService<Organization> {
  constructor(http: HttpClient, httpUrlGenerator: DefaultHttpUrlGenerator, logger: Logger) {
    super('Organization', http, httpUrlGenerator);
  }

  getAll(): Observable<Organization[]> {
    console.log('getAll called');
    // custom call to api correct variant:
    return this.execute('GET', `${environment.apiUrl}org/${someId}/apps`)
    // custom call to api also worked variant:
    // return this.http.get<Organization[]>(`${environment.apiUrl}org/${someId}/apps`);
  }
}
于 2020-01-24T08:51:46.517 回答
0

我最终使用了 getWithQuery 函数:

getWithQuery(params: QueryParams): Observable<Weapon[]> {

    const hero= params['heroId'] || '';
    const pageIndex = params['pageIndex'] || '0';
    const pageSize = params['pageSize'] || '25';
    const apiUrl = `api/hero/${heroId}/weapons/?page=${pageIndex}&size=${pageSize}`

    return this.http.get(apiUrl)
}

而不是使用 getAll。

于 2020-10-29T14:08:44.573 回答
0

您需要使用 NGRX 的路由器商店

使用商店,您有以下选择器:

selectQueryParams, selectRouteParams,selectRouteDataselectUrl.

因此,您可以轻松满足构建不同路径的所有需求。

于 2019-11-13T20:55:54.750 回答