Angular 标识符是指表中的私有成员
我试图在angular中定义一个Angular 标识符是指表中的私有成员,angular,Angular,我试图在angular中定义一个模型,并使用它。 这是我的密码: 'user.model.ts' export class User{ private name: string; constructor($name: string){ this.name = $name; } public get $name(): string { return this.name; } public set $subject(value:
模型
,并使用它。
这是我的密码:
'user.model.ts'
export class User{
private name: string;
constructor($name: string){
this.name = $name;
}
public get $name(): string {
return this.name;
}
public set $subject(value: string) {
this.name = value;
}
}
组件。ts
myUsers: Array<User>;
ngOnInit(){
//api call
this.myUsers= resultFromAPi;
}
我知道我可以通过公开字段来修复错误,但我认为这是一个糟糕的设计
更新
{{user.$name}}
甚至不在UI上显示名称那么,在定义名为$name
的公共getter时,为什么模板代码包含{{user.name}
{{user.name}}
应该是
{{user.$name}}
或者更改您的
用户
类成员名称。另一个对我来说没有意义的代码是调用setter$subject
。如果我继承了您的代码,或者在您创建模板后必须在模板中执行某些操作,这将使我感到困惑。为字段和访问属性使用直观一致的名称
就我个人而言,我会用public gettername
创建一个公共字段name
,或者创建一个私有字段$name
似乎您在没有显示的代码中存在问题,纯粹基于这类问题的趋势,我建议您仅基于传入的
json
创建一个接口,并从您的服务返回该接口
import { HttpClient } from '@angular/common/http';
export interface IUser {
name: string;
}
export class UserService {
constructor(private httpService: HttpClient) {}
getUsers(): Observable<IUser[]> {
return this.httpService.get<IUser[]>('your user end point here');
}
}
从'@angular/common/http'导入{HttpClient};
导出接口IUser{
名称:字符串;
}
导出类用户服务{
构造函数(私有httpService:HttpClient){}
getUsers():可观察{
返回此.httpService.get('your user end point here');
}
}
当我们使用AOT(提前)编译器时,必须公开定义所有模板成员,如属性和方法。如果要使用提前编译,则无法访问模板中的私有属性 我试过了,在这种情况下,我甚至没有在UI上获得名称{{user.$name}}甚至没有在UI上显示名称
Do初始化数组myUsers:array=[]代码>在组件中:)@Vikas-这肯定是对这个问题的一个很好的评论(但不是这个答案)。谢谢,在这种情况下,界面似乎是个好主意@数组的Vikas初始化不起作用。
{{user.$name}}
import { HttpClient } from '@angular/common/http';
export interface IUser {
name: string;
}
export class UserService {
constructor(private httpService: HttpClient) {}
getUsers(): Observable<IUser[]> {
return this.httpService.get<IUser[]>('your user end point here');
}
}