Ответ 1
Вы можете написать свою небольшую директиву, которая будет делать то же самое. Я делюсь своим кодом:
Директива
@Directive({
selector: '[scrollPoint]'
})
export class ScrollPointDirective {
@Input() scrollPoint: number;
constructor(
@Inject(DOCUMENT) private document: Document,
private renderer: Renderer,
private el: ElementRef
) { }
@HostListener('window:scroll', [])
onWindowScroll() {
const windowScroll = this.document.body.scrollTop;
if (windowScroll > this.nsgScrollPoint) {
//add class to the native element
this.renderer.setElementClass(this.el.nativeElement, 'sticky-nav', true);
} else {
//remove class from native element
this.renderer.setElementClass(this.el.nativeElement, 'sticky-nav', false);
}
}
}
Параметр @Input scrollPoint может быть передан из вашего HTML
HTML:
<div [scrollPoint]="235">
<ul class="nav-stacked">
//your code
</ul>
</div>
Добавьте CSS в класс, добавленный в директиве:
CSS
.sticky-nav {
position: sticky;
top: 90px;
bottom: 0;
}
Мне также не удалось интегрировать аффикс на angular2, но это сделало это для меня. Надеюсь, что это поможет.