如何在Angular 2中使用ngModel过滤空值?

时间:2017-01-16 14:57:46

标签: angular angular2-forms angular2-services

流量:

  1. 用户提交带有一些数据的表单,用户未填写的一些可选字段将保存在mongo中,作为' null'。
  2. 稍后,用户决定编辑该表单。
  3. 服务抓取表单并将其显示给用户。
  4. 表单输入框显示' null'因为在第1步他没有填补它们。
  5. 所以,我创建了一个管道:

    import {Pipe, PipeTransform} from '@angular/core';
    
    @Pipe({
    name: 'transformNull'
     })
    
    export class TransformNull implements PipeTransform {
    
    transform(value) {
    if (value == null) {
      return null;
     }
    }
    

    然后,在HTML中我尝试分解ngModel:

    [ngModel]="user.extraInfo | transformNull" (ngModelChange)="user.extraInfo.value=$event"
    

    这导致了这个错误:

    Cannot set property 'value' of undefined TypeError: Cannot set property 'value' of undefined
    

    我尝试使用* ngIf =" isDataAvailable"延迟页面加载,错误消失,用户可以保存表单,将值存储到mongo 当他刷新页面时,输入框为空。

    然后我删除了* ngIf,添加了elvis操作符,但值错误又回来了。

    我使用zone.js v0.7.4,尝试使用0.7.2和0.7.5,但没有运气。

    我在这里缺少什么?

1 个答案:

答案 0 :(得分:6)

[ngModel]="user?.extraInfo " (ngModelChange)="user.extraInfo = $event" 需要将其拆分为

Location
---------------
15630London
45680Edinburg
138739South Wales