javascript - 如何在 angular2 中使用 RxJS?

标签 javascript angular

有什么办法可以编写像 Angular 2 中那样的代码吗?

var closeButton1 = document.querySelector('.close1');
var close1ClickStream = Rx.Observable.fromEvent(closeButton1, 'click');

我尝试了很多方法将它们放入 Angular 2 组件中,但效果不佳! 我尝试过这样的事情

组件.ts

@ViewChild('delete') closeButton1: ElementRef;

close1ClickStream = Observable.fromEvent(closeButton1, 'click');

组件.html

<!-- this code is inside *ngFor -->
<li><a #delete [routerLink]="['/update', item.id]">delete</a></li>

问题是即使我使用 AfterContentInit 也无法访问该元素。此外,如果我可以访问它,我可以使用 Observable.fromEvent(...) 吗?

最佳答案

使用指令来处理事件

@Directive({
   selector: '[click-handler]'
})
export class ClickHandler {

   constructor(public elementRef: ElementRef,) {
   }

   @HostListener('click', ['$event'])
   onClick(e) {
     // do staff here 
   }
}

用法

 <button click-handler> click </button>

无论如何,如果你想使用 Observables 来做到这一点,你将需要 elementRef.nativeElement 可以在这里找到,只需实现 OnInit 方法就可以了。

关于javascript - 如何在 angular2 中使用 RxJS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42667738/

相关文章:

javascript - 在 Javascript 中动态添加

javascript - 对于给定的容器高度,如何在每个给定高度(比如每 10 厘米)后重复容器 div 内的 html 元素?

javascript - 在运行时向 Angular 2 中的 DOM 添加新的组件元素不会呈现组件

javascript - 如何在nodejs中使用异步等待

javascript - For 循环未遍历长度

javascript - 处理当前引发异常的正则表达式中的潜力

javascript - 对于 Angular2 项目,在 gulp 中,我如何连接从 typescript 生成的所有 JavaScript 文件并将它们添加到我的 index.html 文件中

javascript - 无法使用 Angular Directive(指令)?

angular - PrimeNG Accordion 中的 ng 模板问题

javascript - AWS 的 Cognito 文档似乎毫无意义