angular - 如何将 fromEvent (Angular rxjs) 与多个元素一起使用?
问题描述
我有一个带有多个按钮的角度应用程序,这些按钮具有特定的 ID。他们每个人都有一个点击功能,我想跟踪用户是否点击了按钮而不更改每个方法中的任何内容。
示例代码:
import { Component, ViewChild, ElementRef } from '@angular/core';
import { Observable } from 'rxjs';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
@ViewChild('BUTTON_EDIT', {read: ElementRef}) BUTTON_EDIT;
@ViewChild('BUTTON_ADD', {read: ElementRef}) BUTTON_ADD;
ele: Element;
ngAfterViewInit(): void {
let clickStream;
//check which element was pressed and get the id
//how can i check it?
clickStream = fromEvent(this.ele, 'clicked');
var id = this.ele.id;
clickStream.subscribe(event => {
//send info
});
}
}
解决方案
Angular 允许您将多个方法绑定到单击事件。这意味着您可以绑定一个常见的“单击”方法,该方法接受元素的 ID,并且不会修改特定于该按钮的事件处理程序方法,如下所示:
<button id="add-btn" #addBtn (click)="click(addBtn.id); add()">
Add
</button>
<button id="edit-btn" #editBtn (click)="click(editBtn.id); edit()">
Edit
</button>
该click
方法跟踪所有按钮单击,而add
andedit
方法是特定于每个按钮的事件处理程序。
推荐阅读
- python - 使用 Keras 的 LSTM,输入到第一层的尺寸误差
- r - R中并行算法与顺序算法的不同结果
- apache - 如何测量将数据从 csv 文件导入 Hbase 的时间?
- laravel - 身份验证 - 在会话和基于令牌的身份验证之间共享相同的经过身份验证的用户
- reactjs - 将 react router v4 与 react 16.5.2 一起使用,在加载时收到警告并使用路由器
- .net - 从 .Net 应用程序登录到 Logstash 的最佳做法是什么?
- javascript - 在 Route 中反应上下文
- bash - 在bash中解析具有多个多字的参数
- python - Pyodbc MSSQL 数据库备份 unicode 问题
- java - finishAffinity 不会终止异步任务