在[(ngModel)]中绑定私有财产
如何在Angular 4中绑定private
财产?在[(ngModel)]中绑定私有财产
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私有属性绑定?”
没有办法将private
变量绑定到模板(在您的情况下使用[(ngModel)]
)。你应该使用public
变量。
那么封装呢? – bielas
@bielas,没什么,你可以尽可能多地使用'private'变量,但是没有办法将它们绑定到模板 –
答案是将其改为:
private _id: number;
get id() : number {
return this.id;
}
set id(name : number) {
this.id = name;
}
再次,在这种情况下,**没有getter和setter **的意思。 – jonrsharpe
这是为什么?你能告诉我吗? – bielas
你为什么这么想?因为他们*没有做任何事情*。你已经添加了多行代码和相关的认知开销,*没有任何好处*。透明的方式来控制访问属性,如这些访问器和Python的属性,伟大的事情是,你可以*完全抛弃它们直到你真的需要它们去做某件事。 – jonrsharpe
为什么你的getter和setter方法有不同的名字?你应该只有'get insertDate'和'set insertDate',并给私人支持属性一个不同的名字('_insertDate',按照惯例)。这就是说,鉴于你的getter和setter不做任何事情,*为什么你有他们?* – jonrsharpe
否则我会得到错误'重复标识符' – bielas
我认为你应该阅读http://www.typescriptlang.org /docs/handbook/classes.html#accessors。 – jonrsharpe