typescript Angular 2 querySelector和addeventlistener

bq9c1y66  于 2023-05-30  发布在  TypeScript
关注(0)|答案(1)|浏览(85)
onload = function() {
  var fcBody = document.querySelector(".fix-column > .tbody"),
      rcBody = document.querySelector(".rest-columns > .tbody"),
      rcHead = document.querySelector(".rest-columns > .thead");
  rcBody.addEventListener("scroll", function() {
      fcBody.scrollTop = this.scrollTop;
      rcHead.scrollLeft = this.scrollLeft;
  });
};

试着用Angular 2的方式弄清楚上面的代码。到目前为止,我已经提出使用ViewChild,然后尝试添加事件侦听器。我发现了一些与HostListener有关的东西,但它有点复杂

@ViewChild('fcBody') fcBody: any;
@ViewChild('rcBody') rcBody: any;
@ViewChild('rcHead') rcHead: any;

ngAfterViewInit(){
    this.rcBody.addEventListener("scroll", () => {
    this.fcBody.scrollTop = this.rcBody.scrollTop;
    this.rcHead.scrollLeft = this.rcBody.scrollLeft;
    });
}

如果可能的话,我宁愿避免使用指令,但如果这是最好的解决方案,那就这样吧。

iecba09b

iecba09b1#

根据Gunter的评论,我做了以下事情

<div #fcBody [scrollTop]="scrollTop" class="tbody">
<div #rcHead [scrollLeft]="scrollLeft" class="thead">
<div #rcBody (scroll)="scrollHandler($event)" class="tbody">

scrollHandler(event){
    this.scrollTop = event.srcElement.scrollTop;
    this.scrollLeft = event.srcElement.scrollLeft;
}

效果很好。本质上,它使可滚动标题的标题与可滚动表一起滚动,并且冻结的列与可滚动表一起垂直滚动。

相关问题