webentwicklung-frage-antwort-db.com.de

OnScroll-Ereignis Ionic 2

Das Aufnehmen, wenn ein Benutzer auf Ionic 2 blättert, verwirrt mich. Ich möchte im Grunde sagen, wenn ein Benutzer die Seite nach unten scrollt, tun Sie etwas.

Alle Beispiele wären toll.

AKTUALISIEREN: 

Ich habe dies in meinem Konstruktor, also möchte ich, wenn die Seite scrollt, die Tastatur schließen, da sie offen bleibt und keine andere Möglichkeit zum Schließen besteht.

import { Component, ViewChild } from '@angular/core';
import { NavController, NavParams, Content } from 'ionic-angular';
import { Keyboard } from '@ionic-native/keyboard';

export class SearchPage {

  @ViewChild(Content)
  content:Content;

  constructor(public keyboard: Keyboard, public formBuilder: FormBuilder, public navCtrl: NavController, public navParams: NavParams, public apiAuthentication: ApiAuthentication, private http: Http) {

    this.content.ionScroll.subscribe((data)=>{
      this.keyboard.close();
    });
  }
}

Ich erhalte jedoch diese Fehlermeldung Cannot read property 'ionScroll' of undefined, setze ich sie an die falsche Stelle?

8
BA1995

Sie können Inhaltsereignisse abonnieren.

Der Inhalt hat 3 Ausgabeereignisse :

  • ionScroll Wird bei jedem Bildlaufereignis gesendet.
  • ionScrollEnd Wird ausgegeben, wenn das Scrollen beendet ist.
  • ionScrollStart Wird ausgegeben, wenn der Bildlauf zuerst beginnt.

Hören Sie sich eine Veranstaltung an:

@ViewChild(Content)
content: Content;
// ...
ngAfterViewInit() {
  this.content.ionScrollEnd.subscribe((data)=>{
    //... do things
  });
}

Oder mach es aus dem DOM:

<ion-content (ionScroll)="onScroll($event)">

Für Ionic 4

<ion-content [scrollEvents]="true" (ionScroll)="onScroll($event)">
31
Erevald

Sie können die ngOnInit-Methode verwenden, um das Scroll-Ereignis zu registrieren:

ngOnInit() {
   if (this.content) {
      this.content.ionScroll.subscribe((data)=>
        this.keyboard.close();
      });
    }
  }
1

Wenn Sie sich in einer benutzerdefinierten Anweisung befinden, versuchen Sie Folgendes:

import { Renderer2 } from '@angular/core';
...
constructor(private renderer: Renderer2) {}

ngOnInit() {
    this.renderer.listen(this.myElement, 'scroll', (event) => {
        // Do something with 'event'
        console.log(this.myElement.scrollTop);
    });
}
0
alex351