Dalam peristiwa klik angular2 http, klik pertama tidak ditentukan, dan nilai hanya boleh diperolehi selepas klik kedua Apakah sebabnya dan bagaimana untuk melaksanakannya?
Sebagai contoh, dalam kod di bawah, saya telah memperoleh nama dan kata laluan daripada okLogin(). . Tetapi saya mendapati bahawa apabila saya mengklik untuk kali pertama, hasilnya tidak ditentukan Apabila saya mengklik untuk kali kedua, saya boleh mendapatkan hasilnya, tetapi apabila nilai hasil berubah, klik pertama masih mencetak nilai sebelumnya tidak berlaku. Bagaimana untuk menyelesaikannya?
okLogin(){
this.http.get('http://localhost:3000/api/users/login/'+this.Name+'/'+this.Pwd+'')
.map(res => res.json())
.subscribe(
data => this.result=data,
err => console.error(err),
() => console.log('done')
);
return this.result
}
isLogin(event){
if(this.Name===''||this.Name===undefined&&this.Pwd===''||this.Pwd===undefined){
this.check = true;
}
this.check = false;
this.okLogin();
// this.result = this.okLogin();
console.log(this.result);
if(this.result===true){
console.log('登录成功')
}else{
console.log('发生错误')
}
Kesan cetakan:
tidak ditentukan
{data data}
Saya memulakan nilai hasil sebelum ini, tetapi apabila nama pengguna dan kata laluan masuk ditukar kemudian, data http.get telah berubah, tetapi hasilnya masih nilai sebelumnya, dan ia memerlukan klik kedua untuk dipaparkan dengan betul.
Saya juga menghadapi masalah ini semasa saya melakukan kiraan sebelum ini, tetapi penambahan automatik bermula terus dari 0, dan saya tidak mahu melihat 0, saya hanya mahu ia bermula dari 1, jadi saya menetapkan nilai lalai untuk kiraan ialah 1
Kaedah okLogin() ditulis dengan salah.
subscribe
Terdapat tingkah laku tak segerak. Jadi apabila okLogin dipanggil, ia akan kelihatan bahawa this.result belum diberikan nilai dan isLogin akan terus dilaksanakan.Pelan pengubahsuaian:
(1)Kaedah janji
(2)Ubah suai cara menulis langganan