Angular 通过角度';获取对象时,属性未定义;https客户端
我有一个服务类,它使用Angular的Angular 通过角度';获取对象时,属性未定义;https客户端,angular,typescript,properties,Angular,Typescript,Properties,我有一个服务类,它使用Angular的HttpClient从web服务获取数据。 web服务返回一个JSON对象,如下所示: { "id": "some kind of user id", "name": "The user's name", "permissions": [ "String array with different permission names" ] } this.http.get<DomainUser>(this.apiUrl +
HttpClient
从web服务获取数据。
web服务返回一个JSON对象,如下所示:
{
"id": "some kind of user id",
"name": "The user's name",
"permissions": [
"String array with different permission names"
]
}
this.http.get<DomainUser>(this.apiUrl + '/Users/Self')
.map(next => Object.assign(new DomainUser(), next))
.subscribe(next => {
console.info('User: "%s" (Admin: %s)', next.name, next.isAdmin ? 'yes' : 'no');
// ...
},
error => {
// error handling
}
);
我希望HttpClient
的get
方法将这些对象键入为我自己的DomainUser
类对象
这是DomainUser
类:
export class DomainUser {
public id: string;
public name: string;
public permissions: string[];
public get isAdmin(): boolean {
return this.permissions.includes('admin permission's name');
}
}
当我想获取DomainUser
的isAdmin
属性的值时,我得到一条消息,isAdmin
未定义。
如何将用户数据正确键入为DomainUser
get
调用是
this.http.get<DomainUser>(this.apiUrl + '/Users/Self').subscribe(
next => {
console.info('User: "%s" (Admin: %s)', next.name, next.isAdmin ? 'yes' : 'no');
// ...
},
error => {
// error handling
}
);
this.http.get(this.apirl+'/Users/Self')。订阅(
下一步=>{
console.info('User:'%s'(管理员:%s)',next.name,next.isAdmin?'yes':'no');
// ...
},
错误=>{
//错误处理
}
);
您正在将文本解析为新对象,而不是新域用户。无法分析方法,因此该方法不存在。你可以这样做:
{
"id": "some kind of user id",
"name": "The user's name",
"permissions": [
"String array with different permission names"
]
}
this.http.get<DomainUser>(this.apiUrl + '/Users/Self')
.map(next => Object.assign(new DomainUser(), next))
.subscribe(next => {
console.info('User: "%s" (Admin: %s)', next.name, next.isAdmin ? 'yes' : 'no');
// ...
},
error => {
// error handling
}
);
this.http.get(this.apirl+'/Users/Self')
.map(next=>Object.assign(newdomainuser(),next))
.订阅(下一步=>{
console.info('User:'%s'(管理员:%s)',next.name,next.isAdmin?'yes':'no');
// ...
},
错误=>{
//错误处理
}
);
你好,罗宾,谢谢你的回答。现在我得到以下消息:TypeError:_this.http.get(…).map不是一个函数
我还从“rxjs/operators”添加了import{map}代码>并获得相同的消息。导入'rxjs/operators/add/map'代码>在修改路径后(导入'rxjs/add/operator/map';
)它可以工作。谢谢!:)