angular - 为什么 Angular HttpRequest 添加私有(private)属性到 url?

标签 angular typescript

可能我遗漏了一些东西,但是当我尝试以这种方式发出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};

enter image description here

最佳答案

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/

相关文章:

angular - 如何解决 Angular 8 解析器中的 'NullInjectorError: StaticInjectorError'

reactjs - Material-UI : Rating Component, 根据值改变颜色

angular - 如何对组件类应用单一职责?

angular - 如何放入 Angular 模板以检查特定数组是否包含具有等于某个值的属性的对象?

node.js - 缺少 TypeScript + NodeJS readline 属性

android - 找不到:couchbase-lite-android-1.4.1-Ionic Android

javascript - 根据条件禁用(点击)功能

angular - 无法分配给 'value',因为它是常量或只读属性。 Angular 6

javascript - Angular 2 : Dynamic synchronous http requests

javascript - 如何输入其 props 被部分应用的 React 组件?