Navigation 如何返回一些数据,而不知道用户来自哪个页面

Navigation 如何返回一些数据,而不知道用户来自哪个页面,navigation,ionic4,router,Navigation,Ionic4,Router,我有一个可以被多个“父/源”页面导航到的页面 大概是这样的: Page 1 \ \ Page 2 -- Page 4 / Page 3 / 我需要从第4页返回一些数据到它的父级(源页面) 我一直在使用this.navCtrl.back()导航回应用程序的其余部分,但这次我需要返回一些数据,似乎无法使用此函数 我知道可以使用this.navCtrl.navigateBack(['page-1'],extras)传递数据,但我需要知道用户来自哪个页面。有什么简单的方

我有一个可以被多个“父/源”页面导航到的页面

大概是这样的:

Page 1 \
        \
Page 2 -- Page 4
        /
Page 3 /
我需要从第4页返回一些数据到它的父级(源页面)

我一直在使用
this.navCtrl.back()
导航回应用程序的其余部分,但这次我需要返回一些数据,似乎无法使用此函数

我知道可以使用
this.navCtrl.navigateBack(['page-1'],extras)
传递数据,但我需要知道用户来自哪个页面。有什么简单的方法可以做到这一点吗

我知道当我进入第4页时,我可以在附加页面上传递源页面的名称,但它似乎不那么正确(你的看法如何?)


提前感谢。

正如我在评论中所说,这看起来是使用的最佳方案。这样
Page 4
就可以将数据返回给调用者,即使不知道是哪个页面创建/呈现了数据

代码可以是这样的:

Page 1 \
        \
Page 2 -- Page 4
        /
Page 3 /
第1页/第2页/第3页:

// Angular
import { Component } from '@angular/core';

// Ionic
import { ModalController, OverlayEventDetail } from '@ionic/angular';

// Modal page
import { ModalPage } from '../modal/modal.page';

@Component({ ... })
export class ModalExample {
  constructor(public modalController: ModalController) {}

  async presentModal() {
    // create the modal
    const modal = await this.modalController.create({
        component: ModalPage,
        componentProps: {
            'firstName': 'Douglas',
            'lastName': 'Adams',
            'middleInitial': 'N'
        }
    });

    // handle the data returned by the modal
    modal.onDidDismiss().then((detail: OverlayEventDetail) => {
      if (detail !== null) {
        console.log('The result: ', detail.data);
      }
    });

    // present the modal
    return await modal.present();
  }
}

第4页

// Angular
import { Component, Input } from '@angular/core';

// Ionic
import { NavParams } from '@ionic/angular';

@Component({ ... })
export class ModalPage {

  // Data passed in by componentProps
  @Input() firstName: string;
  @Input() lastName: string;
  @Input() middleInitial: string;

  constructor(navParams: NavParams) {
    // componentProps can also be accessed at construction time using NavParams
    console.log(navParams.get('firstName');
  }

  dismiss() {
    // using the injected ModalController this page
    // can "dismiss" itself and optionally pass back data
    this.modalCtrl.dismiss({
      'dismissed': true
    });
  }
}

请确保浏览爱奥尼亚文档中的,查看将要使用模式页面的页面应如何导入该页面。

在向前导航时已将源文件作为附加文件传递-然后它将在第4页上显示,并可用于将附加文件返回到特定页面。它非常简单,不需要模式对话框解决方案,这是没有要求的。

在您的应用程序上下文中,
第4页
可能是一个问题吗?通过这种方式,可以很容易地将数据返回到调用它的任何页面。我想可以,但最好是一个单独的页面。它仍然是一个单独的页面,但可以作为模式打开。这是唯一的区别,这种方法的优点是可以很容易地从模式返回数据。