2

我需要针对来自不同角度模块的不同 api 端点根。

例如

据我所知,ngrx/data 调用的 api 根可以通过 app.module 中的方式进行更改,但只能在全局范围内DefaultDataServiceConfig更改

如何在不同的 Angular 模块中有不同的 api 根?

目前我正在使用 aCustomizeHttpUrlGenerator根据我的命名约定更改网址,但我想有更好的方法。

谢谢

4

3 回答 3

0

创建一个提供程序并在需要时更改它。

const API_ROOT = new InjectionToken<string>('BASE_HREF', {
    factory: () => 'http://server:port/user-api ',
})

然后对于管理员

...
providers: [
  {
    provide: API_ROOT,
    useValue: 'http://server:port/admin-api',
  }
],
...

在代码的某个地方

constructor(@Inject(API_ROOT) public readonly apiRoot: string) {}
于 2020-04-09T17:57:00.073 回答
0

与 malc 答案类似,我建议您根据具体情况覆盖 DataService 的配置。

export class UserDataService extends DefaultDataService<User> {
    constructor(http: HttpClient, httpUrlGenerator: HttpUrlGenerator, defaultConfig: DefaultDataServiceConfig) {
        super('User', http, httpUrlGenerator, { ...defaultConfig, root: 'http://server:port/user-api' })
    }
}

这比抢先设置 DefaultDataService 的 knownHttpUrls 更简单。

于 2021-04-08T08:47:39.400 回答
0

您可以在 HttpUrlGenerator 的 entityResource 方法中为每个实体添加一个条目。

因此,在用户实体的用户模块中,您将拥有

@Injectable()
export class UserDataService extends DefaultDataService<User> {

constructor(http: HttpClient, httpUrlGenerator: HttpUrlGenerator) {
        httpUrlGenerator.entityResource('User','http://server:port/user-api' );
        super('User', http, httpUrlGenerator);
    }
}
于 2021-01-12T17:30:22.333 回答