我试图在导航中突出显示您正在滚动过去的活动片段。
将片段和导航添加到片段很简单并且效果很好,例如:
class="nav-button unselectable"
matRipple
routerLink="/"
fragment="features"
[ngClass]="{ 'nav-active': (active_fragment | async) === 'features' }"
但是路由器显然不知道你在滚动哪个元素,所以我试图监听滚动事件并使用 Y 位置检查最近的元素。
但是我的着陆页不是我的导航的孩子,所以 viewchild 不起作用,例如:
导航组件:
@ViewChild('features', { static: false })
private _features: ElementRef;
@HostListener('window:scroll', ['$event'])
private _update_active_fragment(event: any) {
event.preventDefault();
console.log(window.pageYOffset);
console.log(this._features.nativeElement);
}
着陆页组件:
<app-features #features id="features"></app-features>
但是 features native 元素是未定义的。
我的问题是:
我还能如何实现此功能?
如何从导航组件中获取元素 ref?
如何获取导航组件中 features 元素的 y 位置?
叮当猫咪
相关分类