可能我遗漏了一些东西,但是当我尝试以这种方式发出http请求时:
protected get<T>(path: string, options?: IOptions, sortOpts?: SortOptions, pageOpts?: PageOptions): Observable<T> {
if (sortOpts && pageOpts) {
this.prepareQueryArgs(options.params, sortOpts, pageOpts);
}
const opts = { ...this.opts, ...options };
return this.http.get<T>(`${opts.url}/${path}`, { headers: opts.headers, params: opts.params })
.pipe(
catchError(this.reportError)
)
}
我得到的 url 包含 HttpRequest 私有(private)属性(私有(private)映射;
私有(private)编码器;
私有(private)更新;
私有(private)cloneFrom;) - http://localhost:4200/api/v1/applications?updates=null&cloneFrom=null&encoder=%5Bobject%20Object%5D&map=%5Bobject%20Map%5D&....
export interface IOptions {url?: string, headers?: HttpHeaders, params?: HttpParams, body?: any};
最佳答案
JavaScript 中不存在访问修饰符,它们纯粹是编译器用作开发人员助手的 TypeScript 构造。所有属性都将作为请求查询参数包含在内。
class A {
private a: string;
public b: string;
constructor(a: string, b: string) {
this.a = a;
this.b = b;
}
}
将被转译为
class A {
constructor(a, b) {
this.a = a;
this.b = b;
}
}
您需要定义一个类或接口(interface),其中仅包含您想要转换为查询参数并映射它们的属性。如果我没记错的话, params
参数将接受普通的 ol' { [key: string]: any }
。
关于angular - 为什么 Angular HttpRequest 添加私有(private)属性到 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58646281/