我使用http调用获取数据。但是,我在编译时显示了上述错误。
user.component.ts
this._user.saveUsers(model).then(data => {
if(data.success==true){
this.router.navigate(['/user/list']);
}else{
console.log("data")
}
});
注意:我的对象是动态的。取决于我的http电话
错误:
app / users / users.component.ts(33,21):错误TS2339:属性'成功'类型' {}'上不存在。 app / users / users.component.ts(34,38):error TS2339:Property' data'类型' {}'上不存在。 app / users / users.component.ts(76,25):错误TS2339:属性'成功'类型' {}'上不存在。
答案 0 :(得分:3)
我不知道第33和34行,因为它们没有显示在你的代码中,但有76个你必须放
data: any
或
data: {success: any}
答案 1 :(得分:0)
如果我没错,应该是,
this._user.saveUsers(model).then(data => {
if(data.data.success==true){ //<<<===changed
this.router.navigate(['/user/list']);
}else{
console.log("data")
}
});
答案 2 :(得分:0)
您是否可以发布方法saveUsers
的定义。
如果您使用的是es6-promise
,请查看typings。如您所见,promise类接受通用接口T
,该接口可用于定义可传递给then
的对象类型。因此,如果函数saveUsers
正在返回一个承诺,例如
function saveUsers(model: any) {
return new Promise((resolve, reject) => {...})
}
您需要使函数接受泛型并将其传递给返回的promise(如
)function saveUsers<T>(model: any) {
return new Promise<T>((resolve, reject) => {...})
}
所以现在您可以简单地将saveUsers
称为
saveUsers<{success: boolean}>(model).then(data => {...})
或者只传递传递给的数据的接口。
即使它不是一个es6承诺,只需检查你返回的任何东西的类型。肯定会有一种方法来定义传递给那时的数据类型。
要添加到micronyks
的答案,如果您使用axios
行内的某些内容在saveUsers
内执行网络调用,则返回的响应将为this格式,所以在你的情况下,它将是data.data.success
在then块