[解決済み] Angular 2 下へスクロールする(チャット形式)
2022-02-07 11:26:53
質問
単一セルコンポーネントのセットを
ng-for
ループになります。
すべて揃ったのですが、適切な方法がわかりません。
現在、私は
setTimeout(() => {
scrollToBottom();
});
しかし、画像は非同期でビューポートを押し下げるため、これは常に機能するわけではありません。
Angular 2でチャットウィンドウの一番下までスクロールする適切な方法は何ですか?
どのように解決するのですか?
私も同じ問題を抱えていました。
AfterViewChecked
と
@ViewChild
を組み合わせたものです(Angular2 beta.3)。
コンポーネントのことです。
import {..., AfterViewChecked, ElementRef, ViewChild, OnInit} from 'angular2/core'
@Component({
...
})
export class ChannelComponent implements OnInit, AfterViewChecked {
@ViewChild('scrollMe') private myScrollContainer: ElementRef;
ngOnInit() {
this.scrollToBottom();
}
ngAfterViewChecked() {
this.scrollToBottom();
}
scrollToBottom(): void {
try {
this.myScrollContainer.nativeElement.scrollTop = this.myScrollContainer.nativeElement.scrollHeight;
} catch(err) { }
}
}
テンプレートです。
<div #scrollMe style="overflow: scroll; height: xyz;">
<div class="..."
*ngFor="..."
...>
</div>
</div>
もちろん、これはかなり基本的なことです。その
AfterViewChecked
はビューがチェックされるたびにトリガーされます。
このインターフェイスを実装すると、コンポーネントのビューがチェックされるたびに通知を受けることができます。
例えば、メッセージを送るための入力フィールドがある場合、このイベントはキーが押されるたびに発生します(ほんの一例です)。しかし、もしユーザーが手動でスクロールしたかどうかを保存して、その後に
scrollToBottom()
で問題ないでしょう。
関連
-
[解決済み] Angular 2 下へスクロールする(チャット形式)
-
[解決済み] jQueryで要素にスクロールする
-
[解決済み] JavaScriptでページの一番上までスクロールする?
-
[解決済み] Angular HTMLバインディング
-
[解決済み] Angular:*ngClassを使った条件付きクラス
-
[解決済み] モジュール "@angular-devkit/build-angular" が見つかりませんでした。
-
[解決済み] tmuxのスクロールバックバッファサイズを大きくするには?
-
[解決済み】Angular 2 ルート変更時に上部にスクロールさせる
-
[解決済み】react.jsでレンダリング後にページの先頭にスクロールする。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン