2016-07-13 7 views
0

は、私は、角2つのチュートリアルに従っ:ルーティングとナビゲーション - クエリは、アイデアは新しいルートにリストからドリルダウンして、リスト上の同じ項目に戻って返すことですhttps://angular.io/docs/ts/latest/guide/router.html#!#query-parameters角度2 scrollto行動

パラメータ。

スクロールせずにリストが非常に短いため、正常に動作します。

私は同じシナリオですが、長いリストを持っています。 リスト画面に戻った後、リストをロードしてバインドし、現在の項目(常に表示されない)にスクロールを設定する必要があります。 私が試した: が実際にすべてのフックとクエリセレクタがnullを返すたびにそれを試し

ngAfterViewChecked() { 
     if(this.selectedId) 
      this.el.nativeElement.querySelector("[id='7']").scrollIntoView(); 
    } 

(7ハード簡単にするために符号化されます)。ここ

...querySelector("[id='7']").scrollIntoView();)私はアイデアの出だ

は、あなたがリストを結合した後、スクロールを達成するために何か他のものと考えることができ、角度のライブexmpleです:? は(ページのロード後にブラウザのコンソール上でこの行が正常に動作します: http://plnkr.co/edit/?p=preview ウィンドウを縮小(スクロールバーを取得するために)、あなたは私が何を意味するかわかります最後のヒーロー(rubberMan)をクリックした場合 おかげ

答えて

2

を、私は解決策/回避策を見つけました:。

ngAfterViewChecked() { 
    let timer = Observable.timer(0); 
    timer.subscribe(t => { 
     if (this.selectedId) 
      this.el.nativeElement.querySelector("[id='" + this.selectedId + "']").scrollIntoView(); 
    }); 

遅延がゼロのタイマーで問題が解決されます。