当前位置: 首页 > 知识库问答 >
问题:

在 Angular2 路由之间传递数据,类似于模式对话框

曾河
2023-03-14

是否可以在Angular2中从一条路线返回数据到另一条路线?类似于使用模态搜索/选择一些数据,然后将其返回。

  1. 应用程序从/mainRoute开始。
  2. 用户单击搜索按钮
  3. 导航到/搜索
  4. 加载新路由/组件
  5. 用户选择X数据
  6. 我“关闭”当前路线(即返回/主路线)
  7. /mainRoute组件现在具有X对象

在Angular1中,我做了我自己的路由服务,它通过promise实现了这一点:

MyRouter.openView('/...../').then(function(returnData){ })

在Angular2中是否有类似的东西?我也读过关于ngrx /路由器的信息,但我没有发现与此类似的内容。

共有1个答案

秦涵映
2023-03-14

听起来您想在多个路由组件之间共享数据。一种常见的模式是构建一个服务,该服务被共享/注入到您想要共享该数据的任何组件中。然后,您可以通过服务从每个组件调用、写入或读取数据,以获取相同的数据。

import { Component, OnInit } from '@angular/core';
import { SharedService } from './shared.service.ts';

@Component({
  selector: 'my-component-a',
  templateUrl: 'a.component.html'
})
export class ComponentA implements OnInit {
  constructor (private sharedService: SharedService) {}

  ngOnInit () {
    this.sharedService.write('Hello from component A');
  }
}

b .组件. ts

import { Component, OnInit } from '@angular/core';
import { SharedService } from './shared.service.ts';

@Component({
  selector: 'my-component-b',
  templateUrl: 'b.component.html'
})
export class ComponentA implements OnInit {
  constructor (private sharedService: SharedService) {}

  ngOnInit () {
    let message = this.sharedService.read();
    // message should now be the string `Hello from component A'
  }
}

共享.service.ts

import { Injectable } from '@angular/core';

@Injectable()
export class SharedService {
  private message: string = null;

  constructor () {}

  read () {
    return this.message;
  }

  write (newMessage: string) {
    this.message = newMessage;
  }
}

ngrx/store也是另一种选择。那里的想法是,你有一个单一的应用程序状态,你可以在那里存储所有的应用程序数据。您可以调用商店以获取数据,也可以调用化简器来更新您的应用程序数据。仅这个主题就有很多内容要涵盖,因此我强烈建议在尝试此方法之前先阅读此内容。

 类似资料:
  • 有什么简单的方法可以实现这一点吗? 这是我导航到路线的代码 这是我的路由模块 基本上,我希望执行与CreateAlbum组件是当前组件的子组件相同的操作,在这种情况下,我将使用@Input()

  • 问题内容: 我遇到的情况是表单跨越了几页(可能并不理想,但这就是事实)。我想为整个表单提供一个范围,以便您随身携带,以便用户在步骤之间来回移动时很容易记住状态。 所以我需要用非常伪的代码来做: 组 单击一个链接,然后将其路由到新模板(可能使用同一控制器)。 仍应与最后一页上的值相同。 是否以某种方式持久保存示波器的数据是解决此问题的正确方法,还是还有其他方法?您是否甚至可以创建一个在路由之间具有持

  • 可以在多个类之间传递数据吗? 我试图实现的是“一个类设置某个类的值,另一个类访问它”(java初学者)

  • 问题内容: 我面临着在两个状态之间传递数据而不暴露url中数据的问题,就像用户不能真正直接进入此状态一样。 例如。我有两个状态“ A”和“ B”。我正在状态“ A”进行一些服务器调用,并将调用的响应传递到状态“ B”。服务器调用的响应是一个字符串消息,该消息很长,因此我无法在url中公开它。 那么,有角度的ui路由器中有什么方法可以在不使用url参数的情况下在状态之间传递数据吗? 问题答案: 我们

  • 我有一个JPanel表单,其中包含一个JList和一些JButton。JPanel看起来像这样 当我单击Add List按钮时,会显示一个单独的JFrame表单。JFrame表单将如下所示 单击JFrame上的add按钮时,我需要将JTextfield(命名列表名)的值添加到上一个JPanel上的JList。我想知道如何将值从JFrame传递到JPanel?如有任何建议,将不胜感激。 下面是 JP

  • 我对如何在两个模型之间传递数据有疑问。 所以我想把状态从单元传递到主模型,并在那里进行反应。例如发送请求。