我有一个获取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
每个字段,但这是一个巨大的丑陋对象。
有没有人有干净的方法来做到这一点?
将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
};
}
从我在这里看到的,您有 2 个简单的解决方案:
1-使用对象分配功能。
this.userData = Object.assign(new UserData(), backendData);
2-如果您的数据来自http请求并且您正在使用HttpClient,只需执行以下操作
即可this.http.get<UserData>(backendUrl)... etc
如果会自动为您反序列化它。
我希望我对您有所帮助。