Ich verwende *ngIf
für ein ElementAngular2 ngIf dynamische Änderung
<div *ngFor="let el of elemenets>
<div *ngIf="el.offsetTop < scrollTop">
....
</div>
</div>
offsetTop die offsetTop des div *ngIf
Zustand darstellen ist verpflichtet.
Was ich in der Komponente tun ist, ich die pageYOffset halten in der Variablen z
class Test implements onInit{
scrollTop:number = 0;
ngOnInit{
window.addEventListener('scroll',function(){
this.scrollTop = window.pageYOffset;
console.log(this.scrollTop)
},true)
}
}
Es funktioniert, wenn Website geladen wird, aber wenn ich nach oben oder unten und Änderungswert von scrollTop
Variable bleibt es gleich.
Wenn ich es richtig verstanden habe, ändert *ngIf
Änderungen, wenn ScrollTop Variable ändert, sollte es erneut Bedingung bewerten, aber es ist nicht in meinem Fall.
Gibt es eine Lösung für mein Problem oder muss ich einen anderen Ansatz finden? Dank
Vielleicht schrieb ich die falsch Frage. Der Wert von window.pageYOffset wird in der Variablen gespeichert und ändert den Wert, wenn ich nach unten/oben blättern möchte, aber ngIf bewertet die Bedingung nur, wenn die Seite geladen ist. Die Bedingung wird nicht erneut ausgewertet, wenn sich der Wert der scrollTop - Variable ändert, wenn er –
hat. Haben Sie einen meiner Vorschläge ausprobiert? Selbst wenn der Event-Handler aufgerufen wird, hilft dies nicht viel, wenn "this" nicht auf Ihre Komponente zeigt. –
yep, das hat funktioniert! Danke, aber warum hat der zweite oder mein Ansatz nicht so funktioniert, wie es sollte? –