为什么我只在ng Model中看到私有类属性

问题描述 投票:-1回答:3

当我在模型和getter / setter中使用具有私有属性的类时,我只能访问私有属性,但不能访问具有getter / setter的公共属性。

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

为什么我在ngModel中使用'_r'而不是'r'?如何做到/我应该这样做吗?

angular typescript setter ngmodel
3个回答
0
投票

这实际上代表了你在你的打字稿类Circle中写的内容。

如果你想访问rCircle属性,我不明白为什么你也会有私有属性。

你的模型应该只是:

export class Circle {
  C: number;
  r: number;
}

0
投票

根据我的理解,你在设置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
投票

所以我找到了我想要的东西..如果有人谷歌这个:https://stackblitz.com/edit/angular-mkncdh

你定义一个你想要私有的属性,然后将它设置为enumerable = false,你可以在circle.ts中看到。它比我想要的要复杂一点,但却完全符合我的要求。现在你可以在输出中看到在ngModel中只有那些公共属性:)

© www.soinside.com 2019 - 2024. All rights reserved.