Как добиться зафиксированного скролла с помощью RxJs?

У меня есть блок с mat-table внутри. У него есть скрол. Изначально значение этого скрола 0. Мне нужно, чтобы значение было 2 или больше. Если прокрутить до высоты 0, чтобы автоматически перещелкивалось на 2, то же самое с окончательным значением прокрутки. Если прокрутили 1000, то после прокрутки до 1000 оно изменилось на 998.

файл TS:

export class GridComponent implements OnInit {

  public dataSource: Post[] = [];
  public displayedColumns: string [] = ['id', 'title', 'body'];

  @ViewChild('content', {static: true}) content: ElementRef;

  constructor(private service: DataService) {

  }

  ngOnInit(): void {
    this.getAllPosts()

    fromEvent(this.content.nativeElement, 'scroll').pipe(
      map((event: Event) => (event.target as Element).scrollTop)).subscribe(data => console.log(data))
  }

  getAllPosts() {
    this.service.getData().pipe().subscribe(data => {
      this.dataSource = data
    })
  }

}

файл HTML:

<div #content class="mat-elevation-z8 content">
  <table mat-table [dataSource]="dataSource" >
    <ng-container matColumnDef="id">
      <th mat-header-cell *matHeaderCellDef>ID</th>
      <td mat-cell *matCellDef="let element"> {{element.id}} </td>
    </ng-container>

    <ng-container matColumnDef="title">
      <th mat-header-cell *matHeaderCellDef>Title</th>
      <td mat-cell *matCellDef="let element"> {{element.title}} </td>
    </ng-container>

    <ng-container matColumnDef="body">
      <th mat-header-cell *matHeaderCellDef>Body</th>
      <td mat-cell *matCellDef="let element"> {{element.body}} </td>
    </ng-container>

    <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
    <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
  </table>
</div>

Ответы (0 шт):