我有一个有多个按钮的角应用程序,它有特定的ID。它们中的每一个都有一个单击函数,我希望跟踪用户是否单击了Button,而没有在每个方法中更改任何内容。
示例代码:
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
});
}
}发布于 2021-07-08 12:25:39
角允许您将多个方法绑定到单击事件。这意味着您可以绑定一个常用的"click“方法,该方法接受元素的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和edit方法是特定于每个按钮的事件处理程序。
发布于 2021-07-08 12:11:53
为了侦听多个事件,可以使用合并,其中
将多个可观测数据转化为单个可观测到的
ngAfterViewInit(): void {
merge(
fromEvent(this.BUTTON_EDIT.nativeElement, 'click'),
fromEvent(this.BUTTON_ADD.nativeElement, 'click'),
).subscribe((event: Event)=> {
console.log(event.target.id);
});
}还有一篇文章-- 使用角中的FromEvent创建可观察事件,它解释细节。
Web中的事件
对于发出的事件,有目标属性,您可以从其中获取元素的id,有一个https://jsfiddle.net/a907jf5g/
角度接近聆听单击事件
@Component({
template: `
<button (click)="add()">Add</button>
<button (click)="edit()">Edit</button>
`,
})
export class MyComponent {
add() {
// add clicked
}
edit() {
// edit clicked
}
}https://stackoverflow.com/questions/68301315
复制相似问题