当我在模型和getter / setter中使用具有私有属性的类时,我只能访问私有属性,但不能访问具有getter / setter的公共属性。
https://stackblitz.com/edit/angular-hx3t7g
为什么我在ngModel中使用'_r'而不是'r'?如何做到/我应该这样做吗?
这实际上代表了你在你的打字稿类Circle
中写的内容。
如果你想访问r
的Circle
属性,我不明白为什么你也会有私有属性。
你的模型应该只是:
export class Circle {
C: number;
r: number;
}
根据我的理解,你在设置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
。
所以我找到了我想要的东西..如果有人谷歌这个:https://stackblitz.com/edit/angular-mkncdh
你定义一个你想要私有的属性,然后将它设置为enumerable = false,你可以在circle.ts中看到。它比我想要的要复杂一点,但却完全符合我的要求。现在你可以在输出中看到在ngModel中只有那些公共属性:)