【问题标题】:Setting a textarea to null when its value is an empty string?当文本区域的值为空字符串时将其设置为空?
【发布时间】:2020-06-06 00:45:34
【问题描述】:

我有一堆由循环生成的文本区域,虽然我可以将初始值设置为 null,但如果用户键入文本然后删除它,该值将恢复为空字符串。

我的html:

<form #reviewForm="ngForm" (ngSubmit)="onReviewFormSubmit(reviewForm.value)">
...
  <textarea (input)="value = $event.target.value"
            [name]="comments" [ngModel]="defaultValue"
            id="{{'comments-'+i}}"
            placeholder="Comments"></textarea>
...
</form>

我的组件:

defaultValue: string = null;

json 对象需要 cmets 的字符串值或 null。我最初使用defaultValue 将其设置为null,当用户键入时我得到一个字符串值,但一旦他们清空文本区域,它就会恢复为""

如何将空字符串状态设置为 null?

【问题讨论】:

    标签: angular typescript textarea


    【解决方案1】:

    您可以尝试以下操作,在输入事件上调用函数。

    虽然在提交表单时可能更容易捕获值?

    <textarea (input)="value = calculateValue($event.target.value)"  
              [name]="comments" [ngModel]="defaultValue"
              id="{{'comments-'+i}}"
              placeholder="Comments"></textarea>
    
    calculateValue(e) {
        if(e == '') {
            return null
        } 
        return e
    }
    

    【讨论】:

    • 不幸的是,这不起作用。我仍然得到一个空字符串。
    • 为了澄清,它确实将值设置为 null,但由于它是表单中 textareas 循环的一部分,因此表单提交不知道该值已被设置。我如何将这个 null 值分配回 textarea 以便我的表单稍后捕获并提交?
    【解决方案2】:

    null 表示有意不存在任何对象值。

    [ngModel] 发帖时不要区分空和空白。

    看到你用nulll绑定控件并发布,它返回空白''

    当你用空白绑定时也会发生同样的事情,因为它会返回字符串。

    另一个例子,你绑定了一些文本说'example',但用户删除了它并发布了页面,你期望得到什么,显然是空白的。

    如果你想将空白处理为空,那么你需要see this

    【讨论】:

      【解决方案3】:

      我认为,您可以在发送表单之前将值重置为 null。 在您的onReviewFormSubmit 方法中,您可以添加一个 if,它检查 value 是否为空字符串,如果是,则将此特定值设置为 null。

       if (value.name === '') {
           value.name = null;
       }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-10
        • 2011-08-25
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        • 2016-09-29
        • 2014-11-06
        • 2016-01-31
        相关资源
        最近更新 更多