我需要针对不同角度模块的不同api端点根。
例如
据我所知,可以通过app.module中的DefaultDataServiceConfig
来更改ngrx / data调用的api根,但只能全局更改
如何在不同的Angular模块中具有不同的api根?
目前,我正在根据我的命名约定使用CustomizeHttpUrlGenerator
来更改网址,但是我想有更好的方法。
谢谢
答案 0 :(得分: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) {}
答案 1 :(得分: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);
}
}
答案 2 :(得分: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 更简单。