【发布时间】:2018-07-06 06:54:27
【问题描述】:
当从 Angular 的 (v5) HttpClient 检索时,我遇到了一些关于 setter 和 getter 的奇怪行为,它们在 TypeScript 中设置/返回对象的另一个公共属性。
以下是重要的结构:
export interface NamedEntity {
id: number;
name: string;
priority?: number;
}
export Rule implements NamedEntity {
ruleId: number;
ruleName: string;
//..other properties
get id(): number {
return this.ruleId;
}
set id(id: number){
this.ruleId = id;
}
get name(): string {
return this.ruleName;
}
set name(name: string){
this.ruleName = name;
}
}
//Another class that implements NamedEntity in the same way
我正在使用 HttpClient 检索 Rule 对象:
return http.get<Rule[]>("my url");
订阅Observable<Rule> 时,我发现所有不是getter/setter 的属性在我的调试器和我的角度模板中都显示没有问题。但是,基于 setter/getter 的属性在调试器中始终显示为 undefined,在我的 Angular 模板上显示为空白。
我的 Angular 项目是使用 Angular-CLI 设置的,我的 tsconfig.json 的目标设置为“es5”。
这很可能是因为 HttpClient 将数据转换为由 TypeScript 生成的 Rule 接口的形状。我如何让 HttpClient 调用的结果对象成为具体的 Rule 类的实例,而不是它的隐式接口?
【问题讨论】:
标签: angular typescript getter-setter angular-httpclient