2017-10-30 1 views
1

Ich versuche, NgZone zu verwenden, um meinen Paginierungsstatus zu aktualisieren, sobald die Zone stabil ist, so dass die Komponente, die ich paginieren möchte, vollständig gerendert wird, und ich die richtige scrollWidth abrufen vom Renderer.Verwenden von ngZone onStable, um zu überprüfen, ob die Komponente gerendert wird

Die Art und Weise ist dies in Angular Material 2 Code verwendet wird:

// Update the position once the zone is stable so that the overlay will be fully rendered 
// before attempting to position it, as the position may depend on the size of the rendered 
// content. 
this._ngZone.onStable.asObservable().pipe(first()).subscribe(() => { 
    this.updatePosition(); 
}); 

ich gleich in meiner Komponente tun und meine eigene Methode anstelle von ‚this.updatePosition()‘ laufen. Das hilft mir zwar nicht, den letzten gerenderten Zustand zu erhalten, aber es läuft immer noch zu früh.

Was fehlt mir hier? Was ist der richtige Weg um ngZone mit onStable zu benutzen?

+0

Können Sie ein Beispiel angeben, das Ihr Problem zeigt? – yurzui

+0

Nein, ich müsste meinen gesamten Build inszenieren, um dieses Problem zu demonstrieren, was ich aus Datenschutzgründen nicht tun kann. Sonst wird es keine signifikante Verzögerung beim Rendern geben und somit wird das Problem, das ich zu lösen versuche, nicht wieder auftauchen. – williwaw

+0

@williwaw, diesen Artikel lesen [Denken Sie immer noch, dass NgZone (zone.js) für die Erkennung von Änderungen in Angular erforderlich ist?] (Https://blog.angularindepth.com/do-you-still-think-that-ngzone -zone-js-is-required-for-change-detection-in-eckig-16f7a575afef) das erklärt 'stable' Begriff –

Antwort

1
// Update the position once the zone is stable so that the overlay will be fully rendered 
// before attempting to position it, as the position may depend on the size of the rendered 
// content. 

let that = this; 

that.updatePosition(); 
Verwandte Themen