angular - ข้อมูล Navparam ที่ส่งมาไม่สามารถใช้งานได้ใน Ionic2
ในหน้าล็อกอิน แอปพลิเคชันจะดึง UDI และ Token และหากการล็อกอิน/การลงทะเบียนสำเร็จ ระบบจะส่งต่อไปยัง MapPage:
if (Token != "-1")
{
this.navCtrl.push(MapPage, {UDI: this.UDI, Token: Token})
this.navCtrl.setRoot(MapPage);
this.navCtrl.popToRoot;
ในเมธอดคอนสตรัคต์ ก่อนที่ popToRoot จะทำงาน console.log(this.UDI, this.Token); จะแสดงค่าของพวกมัน แต่หลังจากนั้นค่าของพวกมันจะกลายเป็น undefined
this.UDI=this.params.get('UDI');
this.Token=this.params.get('Token');
console.log(this.UDI, this.Token);
อัปเดต 1: ผลลัพธ์
ตามที่คุณเห็น ก่อนที่จะไปยังหน้ารายแผนที่ มันจะแสดงค่าที่ส่งผ่านมาถูกต้อง
map.ts:39 2NYIRWI0N8Z6HW2M3HWR XWRU441NHH0B9GSHVC3P
แต่หลังจากการเปลี่ยนหน้าหลักนำทาง
map.ts:39 undefined undefined
คำตอบ #1
คีย์ของคุณดูเหมือนตัวแปรมากกว่าลิเทอรัลสตริง ดังนั้นคีย์และค่าของคุณ ทั้งคู่ เป็นค่าของ UDI และ Token
ลองใช้เครื่องหมายคำพูด
this.navCtrl.setRoot(MapPage, {'UDI': this.UDI, 'Token': Token})
นอกจากนี้คุณกำลังทำทั้ง push พร้อมพารามิเตอร์ และจากนั้น setRoot โดยไม่มีพารามิเตอร์ หน้าของแผนที่ของคุณถูกตั้งค่าเป็น root โดยไม่มี พารามิเตอร์ ฟังก์ชัน setRoot ก็รับพารามิเตอร์เช่นกัน
คำตอบ #2
เพราะหน้าที่เป็นแผนที่คือหน้าหลักและไม่ควรมีปุ่มย้อนกลับ
เหมือนที่ @suraj พูด คุณกำลังผลักดันวิวด้วยพารามิเตอร์ แล้วจากนั้นตั้งหน้าเดียวกันเป็น root แต่ไม่มีพารามิเตอร์ นั่นไม่ถูกต้อง หากคุณไม่ต้องการแสดงลูกศรย้อนกลับ แค่ตั้งหน้าดังกล่าวเป็น root
if (Token != "-1") {
// this.navCtrl. push(MapPage, {UDI: this.UDI, Token: Token}) <- don't do that
this.navCtrl.setRoot(MapPage, {UDI: this.UDI, Token: Token}); <- send the data like this
// this.navCtrl.popToRoot; <- don't do that
// ...
}
