我有一个获取json用户数据的服务,我想在对象上添加一些方法。我正在考虑通过为用户数据创建一个类,然后将从json获得的对象传递到我的构造函数中来做到这一点:
class UserData {
constructor(userData){
this = userData
}
getNode1(){
return this.textNodes.node1;
}
}
在我的服务中,我有这样的代码
import { Injectable } from '@angular/core';
import { UserData } from 'wherever';
@Injectable({
providedIn: 'root'
})
export class UserDataService {
userData;
constructor() {
let backendData = {
textNodes: {
node1: "some text",
node2: "some other text"
}
}
this.userData = new UserData(backendData);
}
}
我尝试但收到此错误:模块解析失败:分配给右值。
我可以做整个对象,每个字段都喜欢这样:this.textNodes.node1 = backendData.textNodes.node1
用于每个字段,但这是一个巨大的丑陋对象。
有人能做到这一点吗?
答案 0 :(得分:1)
将this
设置为等于类内的任何内容将永远不会起作用。 this
是对您当前所在类的引用,因此您将不使用对自身的引用。您可以尝试这样的事情:
class UserData {
private userData: UserDataInterface;
constructor(userData: UserDataInterface){
this.userData = userData
}
getNode1(){
return this.userData.textNodes.node1;
}
}
interface UserDataInterface {
textNodes: {
node1: any;
node2: any
};
}
答案 1 :(得分:0)
从这里我可以看到,您有2个简单的解决方案:
1-使用Object.assign函数。
this.userData = Object.assign(new UserData(), backendData);
2-如果您的数据来自http请求,并且您使用的是HttpClient,则只需执行
this.http.get<UserData>(backendUrl)... etc
如果会自动为您反序列化。
希望我能对您有所帮助。