2

如何private在 Angular 4 中绑定属性?

export class newItem{
  private id: number;
  private description: string;
  private insertDate: any;

  get getId() : number {
    return this.id;
  }
  set setId(name : number) {
    this.id = name;
  }
  get getDescription() : string {
    return this.description;
  }
  set setDescription(description : string) {
    this.description = description;
  }
  get getInsertDate() : string {
    return this.insertDate;
  }
  set setInsertDate(insertDate : string) {
    this.insertDate = insertDate;
  }

这里

它抛出Cannot assign to 'getInsertDate' because it is a constant or a read-only property.

4

2 回答 2

1

答案是将其更改为:

private _id: number;
  get id() : number {
    return this.id;
  }
  set id(name : number) {
    this.id = name;
  }
于 2017-10-13T16:32:59.563 回答
1

直接绑定属性:

这个 Plunker 中的演示

模板 :

<input [(ngModel)]="testVar" #textBox type="text"> 
<p>This is the value of testVar : {{testVar}}</p>

零件 :

 export class MyComponent {
     private testVar: string = "Test this";
 }

  1. 如果您想要双重绑定并使用 getter 和 setter,那么您的 get 和 set 必须具有相同的名称(模板中使用的名称)

  2. 属性不需要在组件中公开以允许与ngModel. 他们可以完全是私人的。

  3. 正如在其他答案中已经说过的那样,在您的情况下,您根本不需要 getter 和 setter!.

为了您自己的头脑清醒,最好避免不必要的代码!

如果您担心封装,请不要:将您的模板视为组件的一部分。模板使用组件私有字段是绝对可以的(并且不通过 get/set 访问器,除非你想要它)

如果您使用的是 Ahead Of Time (AOT) 编译

不幸的是,绑定变量应该是公共的。

于 2018-03-27T14:38:57.967 回答