Angular Observer中next()回调中的作用域问题

Angular Observer中next()回调中的作用域问题,angular,rxjs,angular-material,Angular,Rxjs,Angular Material,我是新来的。使用棱角材料。我使用的是一个名为elementScrolled的方法,该方法返回一个可观察的 我让可观察到的工作没有任何问题。当我滚动next()时,将触发回调。但是我需要运行this.sideNavContent.measureScrollOffset()获取滚动位置,并且此.sideNavContent在下一个()回调中未定义 我想这是一个范围问题。我如何才能将其调到调用this.sideNavContent.measureScrollOffset()的位置当观察者开火时 还有,

我是新来的。使用棱角材料。我使用的是一个名为
elementScrolled
的方法,该方法返回一个可观察的

我让可观察到的工作没有任何问题。当我滚动next()时,将触发回调。但是我需要运行
this.sideNavContent.measureScrollOffset()
获取滚动位置,并且
此.sideNavContent
在下一个()回调中未定义

我想这是一个范围问题。我如何才能将其调到调用this.sideNavContent.measureScrollOffset()的位置当观察者开火时

还有,有没有更好的方法来做这个观察者(因为我对角度是新手)


您可以在subscribe中修复范围问题,也可以使用运算符执行必要的逻辑。在运算符函数中使用双箭头应给出正确的范围

scroller.pipe(tap(()=>
  {
    const offset = this.sideNavContent.measureScrollOffset();
    console.log(offset);
  }),
  catchError((msg)=>{
    console.log(msg);
    return of(msg);
  }),
).subscribe()

我怀疑问题可能是因为您使用的方法定义语法没有将
这个
绑定为封闭类。如果要继续传递对象,请尝试使用箭头函数(例如
next:(foo)=>{…},error:(msg)=>{…}
),该函数应隐式绑定
this
scroller.pipe(tap(()=>
  {
    const offset = this.sideNavContent.measureScrollOffset();
    console.log(offset);
  }),
  catchError((msg)=>{
    console.log(msg);
    return of(msg);
  }),
).subscribe()