angular2 détection de changement de taille du div
J'utilise bootstrap pour ma mise en page et j'ai besoin de vérifier si le système de la taille calculée de mes DIV avec bootstrap par exemple width = 25% est changé.
Est-il une possibilité de faire de la détection de changement sur un attribut dont je n'ai pas mis dans mon template, mais qu'elle est définie par bootstrap. (fenêtre:redimensionner) n'est pas suffisant.
thx
- Pourriez-vous fournir un plunkr? Merci 😉
Vous devez vous connecter pour publier un commentaire.
Vous pouvez ajouter une directive à l'
div
et de mettre en œuvre du cycle de vie de crochetngDoCheck()
pour effectuer votre changement de logique de détection. Vous aurez besoin d'injecter deElementRef
:Si le
div
est à l'intérieur d'un modèle de composant, ajouter un modèle local variableEnsuite utiliser
@ViewChild()
pour obtenir une référence à ladiv
et de mettre en œuvre du cycle de vie de crochetngDoCheck()
oungAfterViewChecked()
pour effectuer votre changement de logique de détection.Noter que ngDoCheck() et ngAfterViewChecked() sera appelée à chaque changement de détection fonctionne. Voir aussi le dev guide Cycle De Vie Des Crochets.
measure()
(ou à la promesse qu'il retourne) est susceptible de singe-patché par Zone.js et, lorsque le asynchrones événement se déclenche (et d'après le gestionnaire d'événement s'exécute), Angulaire du crochet court de détection des changements de nouveau. Vous pouvez résoudre ce problème en cours d'exécution de votre code en dehors de la zone Angulaire. Injecter NgZone, puis vérifiez votre div de taille à l'extérieur de la zone:this._ngZone.runOutsideAngular(_ => { // ... check div size here });
.J'ai eu le même problème j'ai donc utilisé le léger bibliothèque appelée Angulaires-Redimensionner-Événement
https://www.npmjs.com/package/angular-resize-event
Après l'installation, il suffit d'ajouter cette sortie événement à toute div dont vous souhaitez vérifier les changements de taille.
J'ai essayé d'avoir la bonne réponse, mais le taux de rafraîchissement n'était pas très précis, j'ai Donc cherché une autre solution.
Ici, il est
Alors vous pouvez l'utiliser dans n'importe quel élément comme:
Il existe quelques méthodes pour suivre les DOM modifications d'attribut:
setInterval
DOMAttrModified
+propertychange
pour IEMutationObserver
window.getComputedStyle(element)