Tout d'abord, vous pouvez accéder à la taille de votre entrée avec quelque chose comme ceci :
const ele = document.getElementById('yourInputId');
const eleStyle = window.getComputedStyle(ele);
const inputSize = {width: eleStyle.width, height: eleStyle.heigth};
Ensuite, dans une autre méthode, en supposant que vous connaissiez la police et la taille de votre texte (si ce n'est pas le cas, consultez la documentation d'Angular), vous pouvez mettre en place une méthode comme celle-ci :
pixelLength(txt: string, font: number) {
const canva = document.createElement('CANVAS');
const attr = document.createAttribute('id');
attr.value = 'myId';
canva.setAttributeNode(attr);
document.body.appendChild(canva);
const c: any = document.getElementById('myId');
const ctx = c.getContext('2d');
ctx.font = font.toString() + 'px Helvetica';
const result = ctx.measureText(txt).width;
document.body.removeChild(canva);
return result;
}
Vous pourriez vouloir appeler cette méthode dans un contrôle de formulaire personnalisé, pour vérifier s'il sera plus long que inputSize.width
.
Faites-moi savoir si quelque chose n'est pas clair ;)
Bon codage.