Je rencontre des problèmes lors de la défilement d'une en-tête collante dans une application Angular 4. L'événement de défilement ne peut pas être détecté.Événement de défilement de fenêtres utilisant @HostListener ne fonctionnant pas
L'en-tête est placé dans le composant de présentation et le contenu que je veux faire défiler est placé dans le composant routes. Peut-être que c'est le problème?
Ceci est le code que j'ai implémenté.
Dans layout.component.ts
import { Component, OnInit, HostListener, Inject } from '@angular/core';
import { DOCUMENT } from "@angular/platform-browser";
@Component({
selector: 'app-layout',
templateUrl: './layout.component.html',
styleUrls: ['./layout.component.css']
})
export class LayoutComponent implements OnInit {
public navIsFixed: boolean = false;
constructor(public router: Router, @Inject(DOCUMENT) private document: any) { }
@HostListener('window:scroll', [ ])
onWindowScroll(){
const number = window.pageYOffset ||
document.documentElement.scrollTop ||
document.body.scrollTop || 0;
if (number > 50) {
this.navIsFixed = true;
} else if (this.navIsFixed && number < 10) {
this.navIsFixed = false;
}
}
}
Dans layout.component.html
<div [class.fixed]="navIsFixed" class="header">
Que faire si vous définissez dans le composant de haut niveau? app.component.ts (je suppose que votre routeur-prise est là ...) – Carsten
avez-vous trouvé une solution? J'ai le même problème @tolceza – natdico