angular2 - 将值从父路由传递到子路由

2023-11-26

我有一条名为 home 的路线,它有 3 个子路线:文档、邮件和垃圾。在主路由组件中,它有一个名为“user”的变量。我知道有几种方法可以在突出显示的父组件和子组件之间传递信息here,但是我该如何在父/子路由之间传递信息。

{ path: 'home',  component: HomeComponent, children: [
        { path: 'documents',  component: DocumentsComponent },
        { path: 'mail',  component: MailComponent },
        { path: 'trash',  component: TrashComponent },
    ]
},

Service

import { Injectable } from '@angular/core';
@Injectable()
export class HomeService {
  // Mock user, for testing  
  myUser = {name:"John", loggedIn:true};
  // Is Super Admin
  isLogged():boolean {
    if(this.myUser.role == true){
      return true ; 
    }
    return false ; 
  }
}

成分

  constructor(public router: Router, public http: Http, private homeService: HomeService) {

  }

  isLogged(){
    return this.homeService.isLogged(); 
  }

Template

<div class="side-nav fixed" >
    <li style="list-style: none">
        <img alt="avatar" class="circle valign profile-image" height="64" src=
        "../images/avatar.jpg" width="64">
        <div class="right profile-name">
            <!-- Value not changing even with service --> 
            {{myUser.role}} 
        </div>
    </li>


您可以使用通用服务来传递数据,如中所述角度文档

基本上,您可以创建一个具有用户对象的服务,一旦加载父路由或对父组件执行某些操作,就可以更新该用户对象。

用户服务

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

   @Injectable()
   export class UserService {
     // Observable user 
     user = new Subject<string>();
   }

然后,当加载子路由组件时,您可以从服务中检索该值。

主页组件

 @Component({
   ... 
 })
 export class HomeComponent{
   ... 
   constructor(private userService:UserService ){}
   someMethod = () =>{
      this.userService.user.next(<pass user object>);
   }
 }

邮件组件

 @Component({
   ... 
 })
 export class HomeComponent{
   ... 
   constructor(private userService:UserService ){
     this.userService.user.subscribe(userChanged);  
   }

   userChanged = (user) => {
     // Do stuff with user
   }
 }

如果您在父级中添加提供程序,服务对象将是子级中的同一实例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

angular2 - 将值从父路由传递到子路由 的相关文章

  • 循环遍历数组并删除项目,而不中断 for 循环

    我有以下 for 循环 当我使用splice 要删除一个项目 我发现 秒 未定义 我可以检查它是否未定义 但我觉得可能有一种更优雅的方法来做到这一点 我们的愿望是简单地删除一个项目并继续 for i 0 len Auction auctio
  • 如何在javascript中动态向对象数组添加值?

    这是一个对象数组 var data label 1 value 12 label 1 value 12 label 1 value 12 label 1 value 12 我如何动态地为这些添加值 我尝试了以下代码但没有成功 var lab
  • 如何使用 JavaScript 刷新页面?

    如何使用 JavaScript 刷新页面 Use location reload https developer mozilla org en US docs Web API Location reload 例如 每当元素带有以下内容时重新
  • 通过纯 JavaScript 获取 div 的第 n 个子元素

    我有一个名为 myDiv 的 div 元素 我怎样才能得到 myDiv 的第n个孩子DOM https en wikipedia org wiki Document Object Model操纵 Markup function reveal
  • Chrome 扩展程序可以相互通信吗?

    我正在编写一个Chrome扩展程序 并且想要实现一个接口或api 以便我将来制作的其他扩展程序可以使用它 最终的效果可能如下 分机 B 呼叫extensionA someMethod someParameters 并向分机A发送一些数据 分
  • 返回上一页

    我正在使用表格来 评价 页面 此表单将数据 发布 到其他地方的 php 脚本 我只是想在处理表单后显示一个链接 这将使用户返回到上一页 我可以在 php 脚本中使用 javascript 来执行此操作吗 GF 您可以使用链接来调用histo
  • 有什么方法可以复制 div 的渲染 HTML 吗?

    我正在开发电子邮件签名生成器 我想通过按按钮复制最终签名 而不是手动选择签名并将其复制到剪贴板 这意味着我需要它们的图像 文本和样式 我尝试了几种变体 包括 w3schools 的变体 但没有成功 其中一些只是复制文本 但没有样式 例子 h
  • React中如何触发同级组件的函数?

    I am new to front end world and could not figure out how to trigger a function from a sibling component Lets say I have
  • 调用类实例方法 onclick javascript

    我有一个 javascript 文件 其中包含包含方法函数的类 我想知道如何从 onClick 事件调用类实例方法 function MyClass this instanceData Display Me this DisplayData
  • 需要参数的addEventListener(和removeEventListener)函数

    我需要向 8 个对象 手掌 添加一些侦听器 这些对象是相同的 但行为必须根据它们的位置而改变 我有以下 丑陋的 代码 root palmsStatus B B B B B B B B if root palmsStatus 0 N root
  • 如何设置必须输入特定数字的字段?

    我想知道如何创建一个需要输入特定数字或文本的字段 例如 激活码 以及在输入的确认答案的情况下移动到 网页 并且在未确认的情况下移动到 另一页面 的按钮 使用必需的属性
  • 如何在 JavaScript 中将变量的内容写入文件[重复]

    这个问题在这里已经有答案了 可能的重复 firefox 如何启用本地 JavaScript 来读取 写入我的 PC 上的文件 https stackoverflow com questions 2846045 firefox how to
  • Socket IO 服务器到服务器

    服务器是否可以使用 Socket IO 连接到另一个服务器并被视为客户端 并让它加入房间 接收 io sockets in lobby emit 和更多 第一个服务器也在监听连接 消息 嘿 Brad 下面是我的完整 js 应用程序 供参考
  • D3 向对象添加超链接?

    我正在尝试制作 D3 图 它将代表我网站的菜单 我尝试按照此处的其他指南添加超链接 但它们都不起作用 每个对象都会有一个不同的 URL 指向 主页 关于 联系方式等 如果添加超链接 我可以拖动对象吗 这意味着如果我按住单击 如果我单击该对象
  • 引用自身的 Javascript 对象...有问题吗?

    由于 Javascript 允许通过引用分配复合值 因此如果 Javascript 对象引用自身 它将创建无限的引用集 如控制台中所示 这看起来像是某种无限循环 但 Chrome 似乎没有问题 这样做是否存在任何内存问题或其他风险 就记忆力
  • 如何使用 jQuery 单击特定链接时打开引导导航选项卡的特定选项卡?

    我是 jquery 和 bootstrap 的新手 所以请考虑我的错误 我已经创建了一个用于登录和注册的 bootstrap 模式 它包含两个导航选项卡 称为登录和注册 我有两个按钮可以弹出相同的模态窗口 但在模态窗口内显示不同的选项卡 每
  • 将两个数字相加将它们连接起来而不是计算总和

    我将两个数字相加 但没有得到正确的值 例如 做1 2返回 12 而不是 3 我在这段代码中做错了什么 function myFunction var y document getElementById txt1 value var z do
  • 使用ExternalInterface和IE从JavaScript获取Flash中的当前URL

    我正在尝试获取 Flash 播放器当前所在的 URL 不是 swf 文件的 URL 而是浏览器指向的 URL 到目前为止我已经使用过 var st String ExternalInterface call window location
  • Angular 中多个相同的异步管道导致多个 http 请求

    在我的角度应用程序中 我使用异步管道多次渲染组件
  • $ 在 JQuery 中意味着什么

    在下面的 var obj one 1 two 2 three 3 four 4 five 5 each obj function i val console log val 这里是什么意思 是对象吗 是一个别名jQuery对象 函数 它充当

随机推荐

  • Spring boot可以根据属性文件的内容动态创建端点吗?

    到目前为止 我正在创建这样的端点 RequestMapping value test method RequestMethod POST public ResponseBody String indexPost HttpServletReq
  • 用于获取整棵树的 JPA 查询

    我有一个类对所有类别进行建模 并且它们可以按层次结构排序 Entity Table name categories public class Category Id GeneratedValue strategy GenerationTyp
  • 泽西岛多种农产品

    我正在关注球衣教程here弄清楚如何产生多个哑剧输出 从他们的网站来看 这是推荐的方式 GET Produces application xml application json public String doGetAsXmlOrJson
  • 当 pppd 处于活动状态时向 SIM900 发送 AT 命令

    我有一个连接了 SIM900 GSM 附加板的 Raspberry Pi 我已成功与以下设备建立 GPRS 连接pppd依照指示本指南 针对不同的GSM模块 但步骤是相同的 我想定期发送一条 AT 命令 AT CCLK 到SIM900检查时
  • 如何批量上传大文件?

    我有一个小文件共享网页 可以免费使用它 我想上传 0mb 到 1GB 之间的文件 我已经用谷歌搜索了两天了 但找不到任何我需要的东西 我的网页 http boxy tigyisolutions hu不过我现在只能上传20 30mb 我想一次
  • MySQL 查询调优 - 为什么使用变量中的值比使用文字慢得多?

    更新 我自己在下面回答了这个问题 我正在尝试解决 MySQL 查询中的性能问题 我认为我看到的是 将函数的结果分配给变量 然后运行 SELECT 并与该变量进行比较相对较慢 然而 如果为了测试的目的 我将与变量的比较替换为与我知道该函数将返
  • 多部分上传文件servlet [重复]

    这个问题在这里已经有答案了 如何上传文件并获取表单的其他参数 我想在 Java servlet 中处理多部分请求 要浏览并选择要上传的文件 您需要
  • “访问已处理的关闭”是什么意思?

    我有以下代码 public void DequeueRecipe AuthIdentity identity params Guid recipeIds using var session GetSession var recipes fr
  • System.Data.OleDb.OleDbException: 无效的 Internet 地址。如何使用 OleDb 连接到位于网络服务器上的 Excel 文件

    我正在尝试创建与 SharePoint 服务器上的 Excel 文件的 OleDb 连接 我现在正在使用的示例代码抛出 OleDb 异常 无效的互联网地址 public static void ConnectToRemoteExcelFil
  • 刷新 Perl STDIN 缓冲区

    有没有办法清除 Perl 中的 STDIN 缓冲区 我的程序的一部分有很长的输出 有足够的时间让某人输入几个字符 在输出之后我要求输入 但是如果在输出期间输入了字符 它们将被 附加 到输入中输入的任何内容上部分 这是我的问题的一个例子 fo
  • Chrome 上的 Google Colaboratory ServiceWorker 错误

    每当我打开协作文档时 我总是收到相同的错误消息 NotSupportedError 无法注册 ServiceWorker 用户拒绝使用 Service Worker 的权限 这发生在 chrome 上 我的浏览器允许 ServiceWork
  • 捕获隐藏桌面的屏幕截图

    我在 Windows 上使用虚拟桌面 使用我自己用 C 编写的简单应用程序 我想知道是否有办法捕获辅助 隐藏桌面的屏幕截图 我知道我可以执行 SwitchDesktop gt 捕获屏幕截图 gt SwitchDesktop 但这听起来不是一
  • 服务器端视频转换和压缩

    我想为我的 CMS 客户提供自动视频转换器 他们应该能够上传他们的 未修改的 视频文件 MP4 VMV AVI 我的服务器会将其压缩并转换为网络友好的 MP4 文件 与 YouTube 完全一样 结果很清楚 网络友好的 MP4 格式 压缩到
  • Service Worker 和 AJAX

    我正在尝试使用 AJAX 检索要在用户端显示的推送通知的详细信息 但它还不起作用 Push Notifications codelab Copyright 2015 Google Inc All rights reserved Licens
  • 不支持文化

    我使用的是 Visual Studio 2012 旗舰版 我遇到了这个错误 我不知道如何解决它 不支持文化 参数名称 名称 en UK 是无效的区域性标识符 描述 执行期间发生未处理的异常 当前的网络请求 请查看堆栈跟踪以了解更多信息 有关
  • 如何更改Python模块名称?

    只有重命名文件才可能吗 或者有没有一个 module 变量到文件来定义它的名称是什么 如果您确实想使用 import newname 语句导入文件 oldname py 有一个技巧可以实现这一点 导入模块某处使用旧名称 然后将其注入sys
  • PipedInputStream 和 PipedOutputStream 的用例

    管道流的用例有哪些 为什么不将数据读入缓冲区然后将其写出 BlockingQueue 或类似的集合可能会更好地为您服务 它们是线程安全的 健壮的并且可扩展性更好
  • 对象/数组的深度比较[重复]

    这个问题在这里已经有答案了 可能的重复 如何确定两个 JavaScript 对象相等 JavaScript 中的对象比较 如果我有两个数组或对象并且想要比较它们 例如 object1 shoes loafer penny beers bud
  • 如何在我的 java 项目中引用 Maven 依赖项的单元测试类? [复制]

    这个问题在这里已经有答案了 我需要在项目 A 的测试包 src test java 中引用项目 B 中的一些 JUnit 测试 src test java 而 B 是 A 的 Maven 依赖项 这可能吗
  • angular2 - 将值从父路由传递到子路由

    我有一条名为 home 的路线 它有 3 个子路线 文档 邮件和垃圾 在主路由组件中 它有一个名为 user 的变量 我知道有几种方法可以在突出显示的父组件和子组件之间传递信息here 但是我该如何在父 子路由之间传递信息 path hom