Я хочу отобразить всплывающую подсказку, если текст отображается не полностью в виде.
Я попробовал два метода
- Я написал функцию для вычисления scrollWidth & clientWidth и условно показать подсказку. [Работает хорошо].
- Я написал аналогичные логи c в трубе (не работает)
<br><br><br><br>
<!-- It is working well with function getToolTip -->
<div class="text-limit-10rem" #firstDiv [ngbTooltip]="getToolTip(longMessage, firstDiv)">
{{longMessage}}
</div>
<br><br><br>
<div class="text-limit-10rem" #secondDiv [ngbTooltip]="getToolTip(shortMessage, secondDiv)">
{{shortMessage}}
</div>
<br><br><br>
<!-- It's not working when I'm using pipe -->
<div class="text-limit-10rem color-red" #thirdDiv [ngbTooltip]="longMessage | widthPipe: thirdDiv">
{{longMessage}}
</div>
<br><br><br>
<div class="text-limit-10rem color-red" #forthDiv [ngbTooltip]="shortMessage | widthPipe: forthDiv">
{{shortMessage}}
</div>
getToolTip(strVal, element: Element){
if(element.scrollWidth > element.clientWidth){
console.log('From Method: Scroll Width ', element.scrollWidth, ' Client Width ',element.clientWidth);
return strVal;
}
else {
return ''
};
}
Труба
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'widthPipe'
})
export class WidthPipe implements PipeTransform {
transform(strVal: string, elem: Element): string {
console.log('From Pipe Scroll Width ', elem.scrollWidth, ' Client Width ',elem.clientWidth);
if (elem.scrollWidth > elem.clientWidth) {
return strVal && strVal.trim().length > 0 ? strVal : '';
} else {
return '';
}
}
}
.text-limit-10rem {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 10rem;
background-color: YELLOW;
}
Ссылка StackBlitz
Если кто-нибудь знает лучший способ показать подсказку, только когда текст не полностью виден, любезно комментарий.