Wie bekomme ich Doms Höhe in angular2?

8
%Vor%

Ich habe versucht onPageLoaded () und ngAfterViewInit () aber auch nicht funktionieren ... SO, wie bekomme ich die Höhe / Breite des Elements, nachdem die Höhe des Doms gerendert wurde?

    
Kim Wong 05.01.2016, 15:33
quelle

4 Antworten

9

Was Sie wollen, ist die Höhe eines Elements, nachdem Angular die Ereignislebenszyklen verarbeitet, den HTML-Code kompiliert und auf der Seite eingefügt hat, und der Browser das HTML-Rendering abgeschlossen hat.

Du brauchst die Höhe nur, wenn sie stabil ist, nicht vorher. Das Problem ist, dass alles getan wird, nachdem Angular die Javascript-VM-Drehung aufgegeben hat, und es gibt kein "Browser beendet Rendering" oder "Layout berechnet" -Event.

Sie müssen dem Browser eine Chance geben, die Höhe zu berechnen und anzuwenden. Zum Beispiel rufen Sie setTimeout auf. Dies gibt dem Browser die Möglichkeit, die Höhe zu berechnen.

Wahrscheinlich würde ein Intervall von 0 ms funktionieren. Dies liegt daran, dass Aufrufe von offsetHeight bei Bedarf eine Neuberechnung des Layouts auslösen (siehe hier ).

Dies ist ein allgemeines Problem und ist nicht rahmenspezifisch, es ist nur die Art, wie Browser funktionieren. Im Allgemeinen ist es besser zu versuchen, so viel wie möglich diese Art von Logik zu vermeiden (warten, bis die Höhe stabil ist, um X zu tun), es neigt dazu, schwer zu beheben Probleme.

    
Angular University 05.01.2016, 22:42
quelle
5

Probieren Sie die Funktion ngAfterViewInit

aus %Vor%

Und ist Ihr div HTML wie es ist? Andernfalls könnten Sie den Speicherbereich nach id :

entfernen %Vor%     
PierreDuc 05.01.2016 15:42
quelle
2

Das scheint zu funktionieren

In der Ansicht

%Vor%

In der Komponente

%Vor%     
i8abug 06.08.2016 21:19
quelle
0

Versuchen Sie ionViewDidEnter

Lifecycle-Haken anzeigen Glücklicherweise enthält Ionic eine Reihe von Ansichten Lifecycle hooks in den NavController - Teil des Ionic-Moduls. Sie folgen vier Mustern von Event-Handlern:

  

ionViewLoaded funktioniert genauso wie ngOnInit und wird einmal bei der Ansicht ausgelöst   wird zunächst in das DOM geladen

     

ionViewWillEnter und ionViewDidEnter   sind Hooks, die vor und nach der betreffenden Seite verfügbar sind   wird aktiv

     

ionViewWillLeave und ionViewDidLeave sind Hooks   verfügbar vor und nach dem Verlassen der Seite im Ansichtsfenster

     

ionViewWillUnload und ionViewDidUnload sind verfügbare Hooks   vor und nach dem Entfernen der Seite aus dem DOM

Ссылка

    
nottinhill 07.08.2016 14:20
quelle

Tags und Links