2017-12-18 12 views
0

app.component.htmlのコードスナップショットでは、行39〜58の表にクリック可能な行が表示されます。ユーザーが行をクリックすると、関連する他の行が表に表示されますすなわち、ユーザが行をクリックすると、onSelectAya(aya, suraTable)app.component.tsに呼び出されます。その関数は必要な行をロードし、表が表示されます。アングル型アプリケーションで表の行またはリスト項目にスクロール

私はこのことにこだわっています。 suraTableが100行で終了するとします。現在の行為は行1,2,3 ...がもちろん表示されているということです。行50にテーブルを表示できるようにする必要があります(情報は行91のパラメータayaに格納されています)。どのようにその位置にスクロールしますか?私はscrollTop方法を試しましたが、suraTable.scrollTopの前後の値をチェックすると、値は常に0(つまり0ピクセルです)です。行100は、console.log(suraTable)に達すると、ブラウザに期待される出力が生成されていることを示しています。これは、要素が正しく開始されていることを意味しています。

app.component.tsコンポーネント内で、テーブル内の特定の行にスクロールするか、リスト内の項目にスクロールすると簡単にリスト全体の構造に変換できますか?ありがとうございました。

enter image description here

答えて

1

これは、古いブラウザでは動作しない場合があります。

これは単にスクロールの事である場合は、theyr番号を知ることができますので、あなたの行に固有のIDを追加することができ、その後、スクロールが参加しているとき、あなたの要素が上にレンダリングされていない場合

var elmnt = document.getElementById("rowNumber"+rowNumber); 
elmnt.scrollIntoView(); 

を行いますDOMの場合、そのレンダリングが完了したときにコールバックを追加してみてください。それができない場合は、おそらくsetTimeoutできます。

+0

私はこれがどこに行くのかを見ています。それぞれの 'tr'のIDを追加しました。' console.log(suraTable) 'を実行すると、それぞれの' tr'のid(rn1、rn2、rn3 ...)が表示されます。しかし、console.log(document.getElementById( 'rn3'))を実行すると、たとえば 'null'が返されます! – mohsenmadi

+1

あなたのアイデアを使って作業するようにしました。 'null'問題を乗り越えるため、最後のAngularライフサイクルフック' ngAfterViewChecked() 'で指摘したチェックを実装しました。これは、ダストがビューコンポーネントに落ち着いた後にレンダリングされます。他の解決策がない場合(おそらく観察可能性を望んでいたかもしれません...)、あなたのメソッドはまもなく "受け入れられる"ものになります。ありがとうございました。 – mohsenmadi

+0

ガブリエルありがとうございます。素晴らしいソリューションで、完璧に動作します。受け入れ:-)。 – mohsenmadi

関連する問題