Angular 8过滤器:保留文本区域输入的换行符

Posted

技术标签:

【中文标题】Angular 8过滤器:保留文本区域输入的换行符【英文标题】:Angular 8 filter : preserve line breaks on text area input 【发布时间】:2020-03-15 21:56:17 【问题描述】:

我尝试使用 angular 8 制作一个过滤器,以在我的文本区域输入中保留文本换行符,文本输入将放置在图像上方:

<div class="form-group col-10">
          <span class="badge badge-theme mb-3">Message personnalisé</span>
          <textarea class="form-control" id="exampleFormControlTextarea1" formControlName="personalizedMessage"
            rows="6"></textarea>

        </div>
<div class="col-6" style="margin-top: 35px;">
      <div class="row">
        <div class="col-12 card-container">
          <img src=displayedImage >
          <div class="message">
            <p ng-bind-html="personalizedMessage | linebreaks">giftCardForm.controls['personalizedMessage'].value</p>
          </div>
        </div>
      </div>
    </div>

管道

import  Pipe, PipeTransform  from '@angular/core';

@Pipe(
  name: 'linebreaks'
)
export class LinebreaksPipe implements PipeTransform 

  transform(text: any): any 
    return text.replace(/\n/g, "<br>");
  


我是 angular 新手,我不确定管道是否写得好!有人可以帮忙吗!

【问题讨论】:

- 试试这个
感谢@SaurabhYadav,这不起作用 检查工作演示 祝你好运,我正在尝试做同样的事情,但下面的演示不起作用 【参考方案1】:

带有反应式表单的Angular的工作示例,如果您想使用模板驱动表单,请使用formControlName="message" ---> [(ngModel)]="message"

    有一个 textarea 用于放置输入

示例

 <textarea placeholder="Message" formControlName="message" rows="3"></textarea>
    显示位置

&lt;div class="message" [innerHTML]="message"&gt;

    为容器设置样式

.message white-space: pre-wrap;

【讨论】:

这是(对我来说)最简单的答案并且效果很好。您不必使用反应式表单,它与 PrimeNG p-textarea 配合得很好,也可以在 p-scrollPanel 中显示输出 - 这是一个简单的 css 解决方案。请记住,回车和换行符确实存在(即使您看不到它们),并且通过告诉显示组件文本已预先格式化,您可以按预期看到它们。 我喜欢这个答案,因为它对我有用。我正在使用带有 PrimeNG 版本 11 的 Angular 11。答案刚刚奏效!【参考方案2】:

Working Demo

在管道中试试这个:

 export class LinebreaksPipe implements PipeTransform 

      transform(value: string): string 
        return value.replace(/\\n/g, '<br />');
      
    

在模板文件中:

<p [innerHTML]="profileForm.get('personalizedMessage').value | linebreaks">

【讨论】:

以上是关于Angular 8过滤器:保留文本区域输入的换行符的主要内容,如果未能解决你的问题,请参考以下文章

发送邮件时保留文本区域的换行符

使用 Ruby on Rails 在文本区域中保留换行符

使用表单助手在 Rails 的预填充文本区域中保留换行符

无法在 Coach BPM 8.5.7 的输出文本区域中放置换行符

在 woocommerce 的自定义文本区域中保留用户换行符

如何在表格中显示文本区域的换行符?