警报-service.ts
public Alert = {
prompt: () => {
return new Promise((resolve, reject) => {
let prompt = this.alertCtrl.create({
title: 'Enter username',
inputs: [
{
name: 'username',
placeholder: 'Username'
},
],
buttons: [
{
text: 'Cancel',
handler: data => {
reject(false);
}
},
{
text: 'Save',
handler: data => {
console.log(data);
resolve(data);
}
}
]
});
prompt.present();
});
}
}
请求-service.ts
function () {
this.prompt.Alert.prompt().then((res) => {
this.user.username = res;
alert(this.user.username);
}, err => {
this.alertService.Alert.alert('user_cancelled', 'Error');
});
}
当我使用IONIC Serve时,它会在浏览器中运行,但它不能在设备上运行。 我无法读取属性'提示'未定义的
答案 0 :(得分:0)
键入
时function () {
this.prompt.Alert.prompt().then((res) => {
this.user.username = res;
alert(this.user.username);
}, err => {
this.alertService.Alert.alert('user_cancelled', 'Error');
});
}
您没有使用Typescript胖箭头功能。如果您不想使用胖箭头,则必须使用Javascript闭包为this
关键字获取正确的上下文。
现在,this
关键字引用了您的功能,而不是您的对象。
编辑关闭示例:
在打字稿类中:
x = 'Hey baby';
let fatArrowFunction= () => console.log(this.x); // "Hey baby"
that = this;
let usualFunction = function() {
let x = 'Hey sweetheart';
console.log(x); // "Hey sweethearth"
console.log(this.x); // "Hey sweethearth"
console.log(that.x); // "Hey baby"
}