Comment obtenir de l'élément de largeur/hauteur à l'intérieur de directives et de composants?
JS:
@Component({
selector: '.donation',
template: `
<figure id="donation" move>
<img src="image/qrcode.png"/>
<figcaption>
Buy me a cup of coffee.
</figcaption>
</figure>
`
})
export class DonationComponent{}
@Directive({
selector: '[move]'
})
export class MoveDirective{}
Hey,je veux obtenir de l'élément de largeur/hauteur à l'intérieur de MoveDirective et DonationComponent,j'ai lu le document plusieurs fois, mais ne peut toujours pas trouver un moyen de cette réponse.Ne savez cette s'il vous plaît aidez-moi,merci beaucoup!
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser ElementRef comme indiqué ci-dessous,
DÉMO : https://plnkr.co/edit/XZwXEh9PZEEVJpe0BlYq?p=preview vérifier le navigateur de la console.
Même façon, vous pouvez l'utiliser dans le composant lui-même partout où vous en avez besoin.
ElementRef
a été marqué comme risque pour la sécurité: angular.io/docs/js/latest/api/core/index/ElementRef-class.html - est-ce toujours ok pour l'utiliser?windows.resize()
événement aussi mais google il de sorte que vous saurez plus à ce sujet.Pour un peu plus de souplesse qu'avec micronyks réponse, vous pouvez le faire comme ça:
1. Dans votre modèle, ajouter
#myIdentifier
à l'élément que vous voulez pour obtenir la largeur de l'. Exemple:2. Dans votre contrôleur, vous pouvez l'utiliser avec
@ViewChild('myIdentifier')
pour obtenir la largeur:De sécurité
Sur les risques en matière de sécurité
ElementRef
, comme ça, il n'y a aucun. Il y aurait un risque, si vous modifier les DOM à l'aide d'un ElementRef. Mais ici, vous êtes à seulement arriver les Éléments DOM, donc il n'y a pas de risque. Un pari risqué exemple d'utilisation deElementRef
serait:this.myIdentifier.nativeElement.onclick = someFunctionDefinedBySomeUser;
. Comme ce Angulaire de ne pas obtenir une chance d'utiliser ses epuration des mécanismes depuissomeFunctionDefinedBySomeUser
est inséré directement dans les DOM, sauter l'angle d'epuration.