2017-04-03 9 views
1

私のアプリには、現在のブロックの値を保持する固定ヘッダーを作成する必要があります。Ionic 2 - スティッキーヘッダー

私はこのコードを使用してスクロール位置取得:スティッキーヘッダーに表示するどの要素を決定するために

import { Component, ViewChild } from '@angular/core'; 
import { Content } from 'ionic-angular'; 

@Component({ 
    selector: 'page-home', 
    templateUrl: 'home.html' 
}) 
export class HomePage { 
    @ViewChild(Content) 
    content:Content; 

    ngAfterViewInit() { 
    // I want to trigger the listener during the scroll event 
    this.content.ionScroll.subscribe((data)=>{ 
     this.onPageScroll(data); 
    }); 
    } 

    onPageScroll(data) { 
    console.log("top:", data['scrollTop']) 
    } 

    : 
    : 

を、Iは、それぞれの端部に有して隠し要素をブロック:

<div class="titleTag" style="display:none">{{event.title}}</div> 

私はこれらの要素の位置を取得しよう:

let titleTags = document.getElementsByClassName('titleTag'); 
for (let el of <any>titleTags) { 
    console.log(" > offsetTop", el.offsetTop); 
} 

私は0を取得します

私もoffsetHeightscrollTopを試しましたが、どちらも0を返します。

+0

」を試しましたか? https://ionicframework.com/docs/api/components/toolbar/Header/ – Chris

+0

私は ''要素を持っていますが、実際にはスティッキータイトルのプレースホルダーがありますが、問題は私が次の表示する要素! – guyaloni

+1

スティッキーイオンリストヘッダ用の小さな指示文が作成されました:https://github.com/jonaszuberbuehler/ion-affix。このようなsthが必要ですか? – z00bs

答えて

1

イオン2 /角度2の要素を直接取得するには、ElementRefを使用します。

import {ElementRef} from '@angular/core'; 


//class.. 
constructor(public el:ElementRef){} 

//in your function... 
let titleTags =this.el.nativeElement.getElementsByClassName('titleTag'); 
for (let el of <any>titleTags) { 
    console.log(" > offsetTop", el.offsetTop); 
} 
+0

残念ながら、どちらも私のために働いていません...私は0を取得します。私は(デバッグ) 'el.'__proto__をチェックすると' HTMLDivElement {Symbol(Symbol.toStringTag): "HTMLDivElement"} 'を取得します。私はすべての祖先の 'offsetTop'もチェックしました。それらのすべてについて、私は同じ結果を得ました - ゼロ! – guyaloni