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()