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:

我试图在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: 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 getter
name
创建一个公共字段
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');
  }
}