尝试将Object映射到HttpParams但我想排除任何空,null或未定义的参数。
export function mapToHttpParams(obj: object): HttpParams {
return Object.getOwnPropertyNames(obj)
.reduce((p, key) =>
p.set(key, (typeof obj[key] === 'undefined' || obj[key] === null) ? '' : obj[key]),
new HttpParams());
}
此代码仍然包含那些空参数,我想做类似的事情:
export function mapToHttpParams(obj: object): HttpParams {
return Object.getOwnPropertyNames(obj)
.remove(obj[key] === null && obj[key] === '' && obj[key] === null)
.reduce((p, key) =>
p.set(key, (typeof obj[key] === 'undefined' || obj[key] === null) ? '' : obj[key]),
new HttpParams());
}
找不到合适的方法 - 总是遇到编译错误。
答案 0 :(得分:0)
这是你要找的东西:
export function mapToHttpParams(obj: { [key: string]: string }): HttpParams {
const params = Object.getOwnPropertyNames(obj)
.filter(propName => !!obj[propName])
.reduce((acc, cur) => { acc[cur] = obj[cur]; return acc; }, {} as { [key: string]: string });
return new HttpParams({ fromObject: params });
}
答案 1 :(得分:0)
您可以直接通过reduce()
方法传递原始对象,而不是先过滤它们
export function mapToHttpParams(obj: object): HttpParams {
return Object.getOwnPropertyNames(obj)
.reduce((p, key) => obj[key] == null || obj[key] == '' ? p : p.set(key, obj[key]),
new HttpParams());
}