Angular 5将单击事件的数据从父组件传递到在父组件上单击按钮的子组件

2024-03-24

我在表中有一些数据绑定,单击任何特定的我想将当前单击的对象显示更多相关数据到另一个组件(子组件)

例如我从此链接获取的数据:http://jsonplaceholder.typicode.com/users http://jsonplaceholder.typicode.com/users

HTML 代码:

<table>
  <thead>
    <th>
      Id
    </th>
    <th>
      name
    </th>
    <th>
      username
    </th>
    <th>
      email
    </th>
    <th>
      street
    </th>
    <th>
      suite
    </th>
    <th>
      zipcode
    </th>
    <th>
      phone
    </th>
    <th>
      website
    </th>
    </thead>
  <tbody>
    <tr *ngFor="let data of httpdata"> 
      <td>{{data.id}}
      </td> 
      <td>{{data.name}}
      </td> 
      <td>{{data.username}}
      </td> 
      <td>{{data.email}}
      </td> 
      <td>{{data.address.street}}
      </td> 
      <td>{{data.address.city}}
      </td> 
      <td>{{data.address.suite}}
      </td> 
      <td>{{data.address.zipcode}}
      </td> 
      <td>{{data.phone}}
      </td> 
      <td>{{data.website}}
      </td> 
      <td>
        <a routerLink="/conflict-details/conflict" (click)="onSelect(data)">Go to 
        </a> 
      </td> 
    </tr>
  </tbody>
</table>

如果您看到表格中有一个“转到”按钮,当我单击任何特定数据时,它应该显示有关当前单击的完整信息 但就我而言,当我单击“转到”时,我想将数据绑定到另一个组件中,具体来说,所有 td 数据都应显示在新组件(子组件)中。

简单我想跟踪子组件中选定数据的单击事件。并且该表在父组件中呈现。

附件是我的数据表。


您可以使用@Input https://angular.io/api/core/Input and @Output https://angular.io/api/core/Output装饰器实现所需的输出:

Changes:

在父组件中:

HTML 代码:

<div>
  <table *ngIf="isVisible === true">
    <tr>
      <th>
        Id
      </th>
      <th>
        name
      </th>
      <th>
        username
      </th>
      <th>
        email
      </th>
    </tr>
    <tr *ngFor="let data of userInformation">
      <td>{{data.id}}
      </td>
      <td>{{data.name}}
      </td>
      <td>{{data.username}}
      </td>
      <td>{{data.email}}
      </td>
      <td>
        <a (click)="onSelect(data)">Go to
        </a>
      </td>
    </tr>
  </table>

  <div *ngIf="isVisible === false">
    <app-test-child [userInfo]="clickedUser" (notify)="backToList($event)"></app-test-child>
  </div>
</div>

TS Code:

局部变量:

userInformation: any;
isVisible : boolean = true;
clickedUser: any;

父组件中的两个函数:

onSelect(data)
{
   this.isVisible = false;
   this.clickedUser = data;
}

backToList(flag) {
  this.isVisible = flag;
  console.log(flag)
}

在子组件中:

HTML 代码:

<table>
  <tr>
    <th>
      Id
    </th>
    <th>
      name
    </th>
    <th>
      username
    </th>
    <th>
      email
    </th>
  </tr>
  <tr>
    <td>{{clickedUser.id}}
    </td>
    <td>{{clickedUser.name}}
    </td>
    <td>{{clickedUser.username}}
    </td>
    <td>{{clickedUser.email}}
    </td>
    <td>
      <a (click)="backToList()">Back
      </a>
    </td>
  </tr>
</table>

TS Code:

import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';


@Input() userInfo: any;
@Output() notify: EventEmitter<any> = new EventEmitter<any>();

clickedUser: any;

constructor() { }

ngOnInit() {
  this.clickedUser = this.userInfo;
}

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

Angular 5将单击事件的数据从父组件传递到在父组件上单击按钮的子组件 的相关文章

  • 类型错误:路径必须是字符串或缓冲区 MEAN 堆栈

    我在前端使用 Angular 5 在后端使用 Node 并使用 Mongo 作为数据库 现在我试图将图像保存到数据库 但不断收到此错误 我不知道我是在正面还是背面犯了错误 因为这是我第一次处理文件 我做了我的研究 但它主要指向 Angula
  • 暂停角度动画

    Angular 2 中可以暂停动画吗 我想在鼠标悬停在元素上时暂停动画 并在鼠标移出时从停止的位置恢复动画 我创建了一个简单的脚本来演示 https stackblitz com edit scrolling text https stac
  • Typescript:获取未定义的值

    我好像有一个问题无法解决 我希望 dialogTitle 变量也与标题变量一起显示 startHour 和 startMinute 变量 然而 我似乎在标题后得到了标题和 未定义 两次 我应该怎么办 事件表单 component ts im
  • Angular 5 使用 Angular CLI 在运行时加载语言环境

    Angular 5 提供了一种在运行时加载 i18n 语言环境的方法注册区域设置数据 https angular io guide i18n i18n pipes https angular io guide i18n i18n pipes
  • 如何从角度材料日期选择器获取当前时间?

    我正在使用角度材料日期选择器https material angular io components select overview https material angular io components select overview
  • 如何从 DOM 中删除 element.nativeElement?

    我尝试了这样的方法 ViewChild draggable private draggableElement ElementRef this draggableElement nativeElement remove HTML div Bl
  • 在 IE 中用 ngOnit() 编写时,可观察订阅不起作用

    我定义了一个行为主体 组件 ts bsub1 BehaviorSubject
  • Angular 5中如何从父组件继承子组件中的CSS样式

    我有一个父组件 其中有一个子组件 父组件有一些 css 类 子组件扩展了它们 我尝试使用 host 查看文档 但似乎无法使其正常工作 子组件 div class table row body div class table cell bod
  • 上传图片并上传后查看

    我正在尝试在 Angular 5 2 和 Laravel 5 5 中上传个人资料图片 我可以成功地将图像上传到本地存储中的单独文件夹 然后我想像在 Facebook 中一样显示上传的图像 然后我可以查看上传的图像 但它没有上传到文件夹 这是
  • Angular模板绑定,多次调用回调函数

    我尝试实现一个包含结构化数据的网格组件columns definition和它的data array 有一个callback每列定义中的函数 用于自定义显示该列的值 每一个里面callback 它调用了 console log 来显示回调函
  • 如何从 Angular 4 更新/升级到 Angular 5+

    我需要将我的项目从 Angular 4 更新到 Angular 5 我需要将以下所有依赖项更改为 Angular 5 我还将 Angular CLI 更新到了 1 5 0 我尝试创建新项目 但似乎只创建了 Angular 4 项目 ng 新
  • 单击行后插入动态创建组件

    我正在研究解决方案 我想在单击行后附加动态创建的组件 我的表由带有操作按钮的行组成 单击该按钮我将调用角度函数并在该行之后加载组件 这是表代码 div class row div class col div div
  • 如何始终在今天的日期打开 PrimeNg 的 p 日历

    我在我的 Angular 应用程序中使用 PrimeNg 的日历 我正在使用多重选择模式并将日历绑定到数据库中的日期数组 日历从数据库范围内的最新日期开始 但我希望它始终从今天的日期开始 然后用户可以向后和向前导航以查看之前从数据库中选择的
  • 未捕获(承诺):错误:StaticInjectorError(AppModule)[选项]

    我有一个奇怪的错误 通常 我用谷歌搜索过 在这种错误情况下 Angular 在方括号中指定到底是哪个模块 服务 提供者 等导致了问题 然而这里只说options 我尝试添加HttpClientModule HttpModule Option
  • 使用 Angular 5 和 RxJS 观察带有过滤器的数组

    我正在创建一个简单的论坛 我正在寻找过滤帖子 我在 RxJS 中使用 pipe 和 filter 时遇到一些问题 我试图 从内存中检索 api 帖子列表api posts 当与 http get 一起使用时 它返回一个Observable
  • MatSort 未定义 - Angular 5

    我正在尝试在我的角度应用程序中实现材质表 分页和过滤器工作正常 但我无法对表格进行排序 我对 MatSort 的引用是未定义的 我确实将其导入到 AppModule 中 import MatTableModule from angular
  • 如何在navigationStart路由器事件中暂停路线更改

    在我的应用程序中 我有从包 节点模块 公开的路由 因此 我无法将 canActivate 或 canDeactivate 用于节点模块内定义的路由 因此 我开始订阅应用程序组件中的所有路线更改 并根据条件将用户重定向到不同的路线 由于条件有
  • 读取文件并解析其内容

    我有文件上传控件 它保存选定的文件 如下所示 div class Block div
  • Angular Service Worker,缓存离线应用程序的 api 调用

    我正在尝试让服务工作者以角度方式处理 API 请求 我希望该应用程序能够离线工作 并且我有以下配置 name api urls https x com cacheConfig strategy performance maxSize 20
  • Angular 5 webpack 3 aot

    我正在尝试使用 webpack 3 和 Angular 5 进行 aot 构建 但是网上有很多教程 没有一个没有问题地显示完整的示例 到目前为止我已经有了以下配置 对于那些对路径有疑问的人 我在 java 应用程序中使用它 webpack

随机推荐