Angular 2 在事件发出时调用函数/方法

2024-01-31

我有一个组件,当单击关闭按钮时可以从页面中删除该组件。我曾曝光过一个testClose用户可以注册以在组件关闭时执行某些操作的事件。如何注册该事件以在组件关闭时调用函数?例如,我想在 TestComponent 关闭时将 closeCounter 加 1。这是 plnkr:

https://plnkr.co/edit/iGyzIkUQOTCGwaDqr8o0?p=preview https://plnkr.co/edit/iGyzIkUQOTCGwaDqr8o0?p=preview

TestComponent 暴露了一个事件:

import {Component, Input, Output, EventEmitter} from 'angular2/core';

@Component({
  selector: 'test',
  template: `
      <div class="box" *ngIf="!_close">
        <button class="close" (click)="close()">x</button>
      </div>
    `,
    styles:[
      `
        .box{
          background: yellow;
          height: 100px;
          width: 100px;
        }
      ` 
    ]
})
export class TestComponent{

  @Input("testClose") _close = false;
  @Output("testCloseChange") _closeChange = new EventEmitter<boolean>(false);

  close(): void{
    this._close = true;
    this._closeChange.emit(true);
  }

  open(): void{
    this._close = false;
    this._closeChange.emit(true);
  }

}

应用程序组件应该注册到 TestComponent 的关闭事件以调用某些函数。

import {Component} from 'angular2/core';
import {TestComponent} from './test.component';

@Component({
    selector: "my-app",
    template: `
      <div class="container">
        <test [testClose]="isClose"></test>
        Close Count: {{closeCount}}
      </div>
    `,
    directives: [TestComponent]
})
export class AppComponent{

  isClose: boolean = false;
  closeCount: number = 0;

  incrementClose(): void{
    this.closeCount++;
  }

}

只需为正在发出的事件添加一个侦听器

(testCloseChange)="onTestCloseChange($event)"

所以应用程序组件模板将如下所示

<div class="container">
   <test [testClose]="isClose" (testCloseChange)="onTestCloseChange($event)"></test>
   Close Count: {{closeCount}}
</div>

在 App 组件类中,您应该定义 onTestCloseChange

export class AppComponent{

  onTestCloseChange(event) {

  }

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

Angular 2 在事件发出时调用函数/方法 的相关文章

随机推荐

  • 从堆栈安装 ghcjs

    我通过堆栈安装了 GHC 这样stack ghc version显示 GHC 7 10 3 stack install ghcjs Run from outside a project using implicit global proje
  • 是否有用于 Windows 驱动程序开发的开源 C 库(非 c++)? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有用于 Windows 驱动程序开发的开源 C 库 非 c 我正在开发一个网络设备驱动程序 需要一些
  • Powershell 返回错误结果

    我在 Powershell 中遇到了这个奇怪的问题 而不是在其他语言中 谁能向我解释一下为什么会发生这种情况 我尝试返回指定的数字 数字 8 但该函数不断向我抛出所有内容 这是一个错误还是设计使然 Function GetNum Retur
  • 处理两个 != 子句的 OR 语句 Python

    使用Python 2 7 我知道这是非常基本的 但为什么下面的语句不能按书面方式工作 input int raw input while input 10 or input 20 print Incorrect value try agai
  • 如何将 PHP 回溯保存到错误日志中?

    我现在正在使用这个 error log serialize debug backtrace 但我每次都必须反序列化它 有没有更好的方法来存储回溯 这应该生成一个可读的字符串 error log print r debug backtrace
  • .NET for Windows 8 配置文件中的程序集列表

    我正在寻找 NET for Windows 8 配置文件中的程序集列表 这是用于 WIndows 8 Metro 风格应用程序的配置文件 与 Silverlight 一样 它不使用完整的 NET 框架 用于 Metro 风格应用程序的 NE
  • 错误消息“java.net.SocketException:套接字失败:EACCES(权限被拒绝)”

    我收到错误消息 java net SocketException 套接字失败 EACCES 权限被拒绝 当我尝试应用下面的代码时 这是我调用的函数并给了我这个异常 public void run TODO Auto generated me
  • 如何在 ImageMagick 中绘制文本并为其添加阴影?

    我正在图像上打印一些文本convert我想用黑色阴影装饰文本 我尝试过 blur or 高斯但我不能应用于文本 它仅应用于背景图像 我需要使用 draw命令与否 注释 这是我需要更新阴影的代码 font geometricslab703bt
  • Curl 错误 tlsv1 警报协议版本

    以下curl 请求返回错误 有人可以解释一下出了什么问题以及如何纠正它 我已经尝试强制curl使用不同的ssl版本 sslv3和 sslv2 但这不起作用 curl exe GET https www expert nl verbose i
  • 存储波兰语字符 mysql

    我试图保存 等字符 但它们以问号的形式保存在数据库中 我使用 phpMyAdmin 保存它们 数据库和表的排序规则是utf8 bin 尝试将排序规则更改为 utf8 unicode ci or utf8 polish ci 您可以参考 ht
  • Travis-CI中的新作业无法获取curl库

    我已经使用许多 apt get 配置了 Travis CI 并且运行完美 但从本周开始 apt get 失败 部分库无法检索 我没有更改代码 我怎么解决这个问题 有问题的库是curl 工作内容 4天前 https travis ci org
  • ExpandableList View 不展开

    我正在尝试个性化 ExpandableListTview I create Iterator Xml 带有 ExpandableList 视图 group xml 带有简单 TextView 和 Button 的相对布局 Child xml
  • 有没有办法使用 CSS 使这个 SVG 具有渐变动画效果?

    所以我发现this https i pinimg com originals 4b c7 68 4bc7687858221c6b60d7b02fe0740670 png在 Google 上搜索了一个图像 并想尝试重新创建该图形并将其动画化
  • 管理 LINQ to SQL .dbml 模型复杂性

    这个问题在一定程度上解决了这个问题LINQ to SQL dbml 最佳实践 https stackoverflow com questions 33664 best practices for managing linq to sql d
  • 为什么使用 primeng p-radiobutton 会导致 Angular 9 中出现原生元素错误?

    我有一个项目最近从 Angular 8 迁移到 Angular 9 该项目使用primeng version 4 3 0 现在p radiobutton标签在整个项目中广泛用于显示单选按钮 但它无法正常工作 这p radiobutton标签
  • XCTests 在物理设备上失败:“由于超时而取消测试......”

    XCTests 失败并显示以下消息 Canceling tests due to timeout in Waiting for test process to check in 这只是最近几天才开始出现的 我使用的是 Xcode 7 3 1
  • 在 JavaScript 中访问 JSON 对象(已解析)中的数据

    我需要从这个 JSON 对象获取数据 消息 我怎样才能用 JavaScript 做到这一点 例如 要访问姓氏 我只需使用 response i user lastname 但我怎样才能访问这些消息呢 user last message me
  • git rebase 和删除的 rebase 分支导致“交互式 rebase 已启动”错误消息

    我当时正在尝试使用几个分支进行一些操作 因此我在一个临时分支上重新建立了基础 并且当我决定不以另一种方式完成重新建立基础时 我正在解决一些冲突 然后我删除了涉及的临时分支并继续我的快乐之路 几个小时后 我想重新建立另一个分支并收到此错误消息
  • Rails:如何覆盖:destroy 方法?

    我尝试了很多方法来覆盖 destroy 方法的行为 但没有任何效果 我首先使用了 acts as paranoia 插件 但它不适用于 has many through 关联中的模型 我想覆盖 destroy 方法只是为了做这样的事情 de
  • Angular 2 在事件发出时调用函数/方法

    我有一个组件 当单击关闭按钮时可以从页面中删除该组件 我曾曝光过一个testClose用户可以注册以在组件关闭时执行某些操作的事件 如何注册该事件以在组件关闭时调用函数 例如 我想在 TestComponent 关闭时将 closeCoun