应用更多显示,使用NGFOR显示较小的效果,以便显示列表中的其余所有文本,而不仅仅是一个
我想使用 ngFor 减少显示并显示更多效果,以便通过单击查看更多按钮,所有文本都会展开,而不仅仅是一个,我希望如果文本超过例如 150 个字符,我将应用一部分文本+“...”并隐藏其余文本。当我单击“查看更多”按钮时,会显示其余所有文本,而不仅仅是一个,并且“查看更多”按钮文本将更改为“查看更少”。
我还没有取得太大进展,所以我没有完整的代码。
<td *ngFor=" let test of testData?.testDataDescription?.testDataDescriptionCode">
<div #myDivText>
{{handleBigText(test?.descriptionArea?.summary, myDivText)}}
</div>
<span #extend
(click)="collapseText( test?.description?.textSumarryDescription, myDivText, extend)">
<img src="/assets/images/arrow_down.svg"/>
view more
</span>
</td>
public maxLength = 150;
public resizeText = 3;
public sizeDescription = this.maxLength;
public sizeDescriptionDots = this.maxLength + this.resizeText;
collapseText(text: string, myDivText: Element, extend: Element) {
const size = text.length - 3;
if (myDivText.innerHTML.length <= size) {
myDivText.innerHTML = text;
extend.innerHTML = `<img src="/assets/images/arrow_up.svg" />
see less`;
} else {
myDivText.innerHTML = `${text.substring(0, this.sizeDescriptionDots)}...`;
extend.innerHTML = `<img src="/assets/images/arrow_down.svg"/>
view more`;
}
}
handleBigText(text: string, myDivText: Element) {
if (text) {
const textSize = this.maxLength + this.resizeText;
this.sizeDescription = textSize;
this.sizeDescriptionDots = textSize;
return text.length > textSize
? `${text.substring(0, textSize)}...`
: text;
}
return '-';
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您正在解决这个问题。无需实际修改原始文本本身。
让我们使用Angular的
|切片
管道限制显示的文本。 https://angular.io/api/api/common/common/slicepipe>*ngif 有条件地显示或多或少显示文本。
工作示例:
You're overcomplicating this. No need to actually modify the original text itself.
Let's use Angular's
| slice
pipe to limit text shown. https://angular.io/api/common/SlicePipeLets use
*ngIf
to conditionally show more or less text.Working example: https://stackblitz.com/edit/angular-easy-show-more-6ispwx?file=src%2Fapp%2Fapp.component.html