2016-09-12 14 views
14

tôi nhận thấy rằng bạn không thể sử dụng ở góc 2 thành phần tính năng bootstrap như data-spy="affix"Làm thế nào để sử dụng Scrollspy & đóng ở góc 2

Có ai biết làm thế nào để sử dụng đóng và scrollspy ở góc 2? (Example)

+1

sử dụng tính năng này, tôi vẫn đang cố gắng tìm ra cách sử dụng gắn liền với nó, https://www.npmjs.com/package/ng2-scrollspy –

+0

Bạn đã quản lý thiết lập afix với angular2 chưa? Tôi đang đối mặt với cùng một "vấn đề". – Ben

+0

@Ben Tôi vừa tạo một dịch vụ với sự kiện đang di chuyển và một chỉ thị đặt phong cách trên phần tử dựa trên một số logic. Tôi sẽ chia sẻ nó nhưng tôi không có mã nữa. Bạn có lẽ có thể sử dụng điều này quá: https://www.npmjs.com/package/ng2-page-scroll, bạn chỉ cần in đậm phần tử của bạn trên kết thúc cuộn, có lẽ, tôi không chắc chắn –

Trả lời

5

Bạn có thể viết chỉ thị nhỏ của bạn sẽ làm điều tương tự. Tôi chia sẻ mã của tôi:

Chỉ thị:

@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); 
     } 

    } 

} 

Tham số @Input scrollPoint có thể được truyền từ HTML của bạn

HTML:

<div [scrollPoint]="235"> 
    <ul class="nav-stacked"> 
     //your code 
    </ul> 
</div> 

Thêm CSS để lớp thêm trong chỉ thị:

CSS

.sticky-nav { 
    position: sticky; 
    top: 90px; 
    bottom: 0; 
} 

tôi đã không thể tích hợp đóng vào angular2 là tốt, nhưng điều này đã làm nó cho tôi. Hy vọng điều đó sẽ hữu ích.

1

Bạn không cần chỉ thị để làm việc này (Góc 5.0).

1) Chắc chắn bootstrap 3 được nạp <script src="assets/js/bootstrap.min.js"></script>

2) Cần phải xác định phần tử nơi cuộn tràn có thể nhìn thấy. <aside class="affix-mc" data-spy="affix" data-target=".main-body" data-offset-top="20">

Trừ khi thanh cuộn của bạn có nguồn gốc từ window, bạn cần phải xác định data-target

3) Theme yếu tố của bạn một chút, ex. &.affix { width: 180px }

Phương pháp này thậm chí còn hoạt động đối với trang được nhúng bên trong con của bộ định tuyến.

Các vấn đề liên quan