Ramasser quand un utilisateur défile sur Ionic 2 me déroute. Je veux fondamentalement dire, quand un utilisateur fait défiler la page, faire quelque chose.
Tous les exemples seraient géniaux.
METTRE À JOUR:
J'ai ceci dans mon constructeur, donc quand la page défile je veux fermer le clavier, car il est laissé ouvert et aucun autre moyen de se fermer.
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();
});
}
}
Cependant, je reçois cette erreur Cannot read property 'ionScroll' of undefined
. Est-ce que je la mets au mauvais endroit?
Vous pouvez vous abonner à des événements de contenu.
Le contenu a 3 événements de sortie :
Écoutez un événement:
@ViewChild(Content)
content: Content;
// ...
ngAfterViewInit() {
this.content.ionScrollEnd.subscribe((data)=>{
//... do things
});
}
Ou faites le depuis le DOM:
<ion-content (ionScroll)="onScroll($event)">
Pour Ionic 4
<ion-content [scrollEvents]="true" (ionScroll)="onScroll($event)">
Vous pouvez utiliser la méthode ngOnInit pour enregistrer l'événement de défilement:
ngOnInit() {
if (this.content) {
this.content.ionScroll.subscribe((data)=>
this.keyboard.close();
});
}
}
Dans une directive personnalisée, essayez avec quelque chose comme ceci:
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);
});
}