[英]Typescript: Reactive forms patchValue not working with private properties and getters/setters
[英]Typescript: Class members initialization vs setters and getters
我有以下代碼:
export class Myclass {
private _someVal = 2;
public get someVal() {
return this._someVal;
}
public set someVal(val) {
this._someVal = val;
}
}
我在模板<span>{{ someVal }}</span>
使用了這個someVal
價值沒有改變。
使用 setter getter 和 setter 或簡單地let someVal = 2
並直接在模板中使用它之間有什么區別嗎?
在這種特殊情況下,您所做的和正在做的沒有區別:
export class Myclass {
someVal = 2;
}
setter 和 getter 都有用例,例如當您在設置值時需要做其他事情時,但這不是其中之一。
唯一的區別是 get/set 實現允許您具有更大的靈活性,而 public 屬性則不太靈活。
你可以用 get 做什么的例子:
export class Myclass {
private _someVal = 2;
private _otherVal = 1;
public get calculatedVal() {
return this._someVal + this._otherVal;
}
}
然后像這樣訪問calculatedVal
作為屬性: <span>{{ calculatedVal}}</span>
在一個類中,您不使用let
關鍵字。
在這種情況下,使用訪問器是沒有意義的。 如果你在 set 上觸發一個動作,或者在 get 上計算值,那么使用它們是有意義的。
如果直接訪問該屬性有效,這可能是正確的解決方案。
在 Java 世界中,為 DTO 中的每個字段創建 getter/setter 是很常見的,這是否是一種反模式是有爭議的。 這種做法會泄漏到其他語言中。
經驗法則:如果您不需要訪問器,請使用屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.