假设我有一个类 Foo
:
export class Foo {
name: string;
printName(): void {
console.log(this.name);
}
}
现在的问题是,当我的 FooService
从我的后端获取一个 Foo
作为 JSON 并从中创建一个 Foo 对象时,它没有 printName()
因为在 JSON 对象中没有这样的东西。
我应该如何安排(在 Angular 2 的上下文中)?我是否必须在类外部创建我的方法,以便它们只将 Foo
作为参数?
例如,在 Java 中,DTO 有方法是完全没问题的。
最佳答案
通常您只通过 http 传输具有值的对象而不是类实例。您必须自己创建类实例。
export class Foo {
constructor(name: string) {}
printName(): void {
console.log(this.name);
}
}
// data deserialized by angular from the request
let data = { name: 'John' };
let foo: Foo = new Foo(data.name);
如果有帮助,您可以为从服务器接收的数据创建接口(interface),并将其传递给 Foo 类的构造函数。
注意:请记住,TS 中没有类型转换。 如果你正在做类似的事情
let foo: Foo = <Foo> data;
这是一个类型断言,您只是告诉编译器data 是Foo 类型,它不会对data 做任何事情对象。
关于json - Angular 2 : How to preserve class methods on deserialization?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42999127/