【发布时间】:2020-07-17 08:08:44
【问题描述】:
我是 Angular 的新手。我想剪切长度超过 15 个字符的短字符串(比如),然后在末尾添加 ...。
例如:
姓名:坦泽尔,
角色:实习生
地址:Bangal...,
喜欢:C、CPP、...、
我正在使用 PrimeNg 的p-chips 来显示一些标签。我没有收到任何错误。实际上我什么也没得到,我的网页只是空白。甚至控制台日志也很干净。这是我的代码:
<p-chips [(ngModel)]="tokens">
<ng-template let-item pTemplate="item">
{{item | slice:0:15+'...'}}
</ng-template>
</p-chips>
这是stackblitz 相同的。当我删除 +... 时代码有效,但随后没有看到 ... 连接(显然)。请指出我的错误。但是,在一个单独的分支中,我为这个问题创建了自己的自定义管道:
How to cut short long strings while rendering using Typescript
这是代码。
EllipsisPipe.component.ts
import { Pipe } from '@angular/core';
import { SlicePipe } from '@angular/common';
@Pipe({
name: 'ellipsis'
})
export class EllipsisPipe extends SlicePipe {
constructor () {
super();
}
transform(value: string, maxLength: number): any {
const suffix = value && value.length > maxLength ? "..." : "";
return super.transform(value, 0, maxLength) + suffix;
}
}
而且它运行良好。你也可以看到stackblitz。但是当我把这个展示给我的技术主管时,她称我为重新发明轮子的白痴。 :-( 她告诉我使用 slice 或 Angular 本身提供的任何东西。请纠正我的错误。(如果我真的在问一个愚蠢的问题,请原谅我)。
P.S:我得到了一些帮助 - How to truncate text in Angular2?
【问题讨论】:
-
EllipsisPipe的代码来自this answer(应该在问题中提及,但给出了其他参考)。你可以告诉你的技术主管,这个解决方案实际上是在使用SlicePipe。我会说她的评论没有给我留下深刻的印象...... -
是的,没错。我以为我已经粘贴了代码,所以不需要参考。感谢您纠正我,所以我也添加了链接。 :-)
标签: angular typescript angular-pipe