2016-09-12 6 views
14

2角度でScrollspy&接辞を使用するdata-spy="affix"どのように私はあなたのような角度2つのコンポーネントのブートストラップ機能では使用できないことに気づいた

誰が角2における接辞とscrollspyを使用する方法を知っていますか? (Example

+1

これを使用して、私はまだそれを使用する方法を理解しようとしています。https://www.npmjs.com/package/ng2-scrollspy –

+0

angular2でafixを設定できましたか?私は同じ "問題"に直面している。 – Ben

+0

@Ben私は、スクロールのイベントと、ロジックに基づいてエレメントのスタイルを設定するディレクティブを持つサービスを作成しました。私はそれを共有するが、私はもうコードを持っていない。 https://www.npmjs.com/package/ng2-page-scrollでもこれを使うことができます。スクロール仕上げの要素を太字にする必要があります。確かに分かりません –

答えて

5

同じことをする小さな指示文を書くことができます。私は自分のコードを共有しています:

指令:

@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スクロール・パラメータは、あなたのHTML

HTMLから渡すことができます。

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

ディレクティブに追加されたクラスにCSSを追加します。

CSS

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

私もangular2する接辞を統合することができていないが、これは私のためにそれをやりました。 お手伝いをしてください。

1

この機能を使用するには、ディメンション(Angular 5.0)は必要ありません。

1)ブートストラップ3は <script src="assets/js/bootstrap.min.js"></script>

2にロードされていることを確認してください)がオーバーフロースクロールが表示されている要素を特定する必要があります。 <aside class="affix-mc" data-spy="affix" data-target=".main-body" data-offset-top="20">

あなたのスクロールバーは、windowから発信されていない限り、あなたはdata-target

3を指定する必要があります)テーマあなたの要素ビット、EX。 &.affix { width: 180px }

このアプローチは、ルータの子に埋め込まれたページでも機能します。

関連する問題