ค้นหาเว็บไซต์

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
    // ...
}