【发布时间】:2020-07-20 05:20:11
【问题描述】:
如何使用 Angular 管道添加换行符
<th>{{(date | date: 'EEE MMM d')}}</th>
这个输出就像 Mon Jul 20 - 都在同一行。 但我希望它像这样分开:
周一
七月
20
在同一个单元格但在不同的行。就像添加 <br> 标签一样。请查看下图:
【问题讨论】:
如何使用 Angular 管道添加换行符
<th>{{(date | date: 'EEE MMM d')}}</th>
这个输出就像 Mon Jul 20 - 都在同一行。 但我希望它像这样分开:
周一
七月
20
在同一个单元格但在不同的行。就像添加 <br> 标签一样。请查看下图:
【问题讨论】:
<th>
{{(date | date: 'EEE')}}<br/>
<strong>{{(date | date: 'MMM')}}</strong><br/>
{{(date | date: 'd')}}
</th>
【讨论】:
我的第一个解决方案也是创建一个管道:
@Pipe({name: 'breakOn'})
export class BreakOnPipe implements PipeTransform {
transform(value: string, ...args: any[]) {
return value.replace(/,|;/g, '<br>'); //replace all ',' and ';' with <br>
}
}
类似于@Davis Jahn 的回答。但这只是在我的表中显示<br>,并没有实际的换行符。原因是字符串被“转义”了。
解决方案:
<td mat-cell *matCellDef="let row"><span innerHtml="{{ row.value | breakOn }}"></span></td>
<td> 似乎不支持“innerHtml”,但<span> 支持。
【讨论】:
[innerHtml]="row.value | breakOn" 不是更好吗?
您实际上可以尝试实现一个定义新行的管道。
类似这样的:
@Pipe({ Name: 'addLine' })
Export class addLinePipe implements PipeTransform {
transform(value: string, args: string[]): any {
return value.replace(/(?:\r\n|\r|\n)/g, '<br/>');
}
}
然后在其他管道之间调用它:
<th>
{{date | date: 'EEE')}}
{{foo | addLine}}
{{date | date: 'MMM')}}
{{foo | addLine}}
{{date | date: 'd')}}
</th>
【讨论】: