Getter返回未定义,setter创建新属性

时间:2019-08-02 08:58:11

标签: javascript typescript getter

在我的角度应用程序中,我只是将模型类的公共属性更改为私有属性。我还为他们创建了吸气剂和吸气剂。 我注意到,当发送使用请求URI(Customer.id)中的属性的api请求时,getter返回未定义。我尝试将属性设置为之前的行,然后将console.log(Customer)设置为以下行:

{mId: 2, mName: "name", mEmail: "email@gmail.com", mPassword: null, mTelNr: "06-12345678", …}
id: 3  // <-- should not be created
mAdmin: true
mCity: "city"
mDateOfLastAppointment: "2019-08-01"
mEmail: "email@gmail.com"
mHouseNr: "14"
mId: 2  // <-- should be set in stead of creating id property
mName: "name"
mPassword: null
mStreet: "street"
mTelNr: "06-12345678"

在设置console.log(Customer)之前执行Customer.id = 3时,输出不具有id属性。设置器应将Customer.mId设置为3,而不是创建属性id

客户类别:

import {Reservation} from './reservation';

export class Customer {
  get admin(): boolean {
    return this.mAdmin;
  }

  set admin(value: boolean) {
    this.mAdmin = value;
  }
  get dateOfLastAppointment(): string {
    return this.mDateOfLastAppointment;
  }

  set dateOfLastAppointment(value: string) {
    this.mDateOfLastAppointment = value;
  }
  get city(): string {
    return this.mCity;
  }

  set city(value: string) {
    this.mCity = value;
  }
  get street(): string {
    return this.mStreet;
  }

  set street(value: string) {
    this.mStreet = value;
  }
  get telNr(): string {
    return this.mTelNr;
  }

  set telNr(value: string) {
    this.mTelNr = value;
  }
  get password1(): string {
    return this.mPassword1;
  }

  set password1(value: string) {
    this.mPassword1 = value;
  }
  get password(): string {
    return this.mPassword;
  }

  set password(value: string) {
    this.mPassword = value;
  }
  get email(): string {
    return this.mEmail;
  }

  set email(value: string) {
    this.mEmail = value;
  }
  get name(): string {
    return this.mName;
  }

  set name(value: string) {
    this.mName = value;
  }
  get id(): number {
    return this.mId;
  }

  set id(value: number) {
    this.mId = value;
  }
  get houseNr(): string {
    return this.mHouseNr;
  }

  set houseNr(value: string) {
    this.mHouseNr = value;
  }

  private mId: number;
  private mName: string;
  private mEmail: string;
  private mPassword: string;
  private mPassword1: string;
  private mTelNr: string;
  private mStreet: string;
  private mHouseNr: string;
  private mCity: string;
  private mDateOfLastAppointment: string;
  private mAdmin: boolean;

  reservations: Reservation[];

  constructor() {
  }
}

调用api的方法:

getCustomersReservations(customer: Customer) {
    console.log(customer);
    customer.id = 3;
    console.log(customer);
    return this.api.get('customers/' + customer.id + '/reservations')
      .pipe(map(ApiService.extractData));
  }

我错误地使用了这些吸气剂和吸气剂吗?

0 个答案:

没有答案