Почему я вижу только свойства частного класса в ngModel - PullRequest
0 голосов
/ 31 марта 2019

Когда я использую класс с частными свойствами в модели и геттере / установщике, у меня есть доступ только к частному свойству, но не к общему свойству с геттером / сеттером.

https://stackblitz.com/edit/angular-hx3t7g

Почему у меня в _gModel '_r' вместо 'r'?Как сделать это правильно / я должен даже сделать это так?

Ответы [ 3 ]

0 голосов
/ 31 марта 2019

Насколько я понимаю, вы вычисляете значение для C при установке r.Похоже, ваш код верен, но было бы лучше, если вы измените C на приватный, поскольку вы не хотите получать к нему доступ, поскольку его значение вычисляется на основе r.

export class Circle {
  private C: number; // make C private
  private _r: number;

  set r(value: number) {
    this.C=2*3.14*value;
    this._r = value;
  }

  get r(): number {
    return this._r;
  }
}

Поскольку _r является приватным, вы не сможете получить к нему доступ вне класса, и единственный способ изменить его - использовать r.

0 голосов
/ 31 марта 2019

Итак, я нашел то, что искал ... Если кто-нибудь тоже гуглит этот:circle.ts.Это стало немного сложнее, чем я хотел, но делает именно то, что я хочу.Теперь вы можете увидеть в выводе, что в ngModel есть только эти публичные свойства :)

0 голосов
/ 31 марта 2019

Это действительно соответствует тому, что вы написали в своем классе машинописи Circle.

Если вы хотите иметь доступ к атрибуту r Circle, я не понимаю, почему вы бы также имелизакрытый атрибут.

Ваша модель должна быть просто:

export class Circle {
  C: number;
  r: number;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...