null管道角度2在AOT时返回错误

时间:2017-01-28 13:05:58

标签: angular angular2-aot angular2-pipe

我有这个烟斗:

   @Pipe({
  name: 'transformNull'
})

export class TransformNull implements PipeTransform {

  transform(value: any) {
    switch(value){
      case null:
      case undefined:
      case "null":
      case "undefined":
        value = null;
        break;
      default:
        if(typeof(value) == "string"){
          value = value.trim();
        }
        break;
    }
    return value.toString();
  }
}

这是html代码:

<input type="text" formControlName="chipNumber" autocorrect="off" autocapitalize="off" spellcheck="off" name="chipNumber" class="form-control" id="chipNumber" placeholder="Αριθμός Microchip" [ngModel]="pet.chipNumber | transformNull" (ngModelChange)="pet.chipNumber.value = $event">

当我在JIT(ng build --prod)上运行时,管道按原样运行,当字段为“null”时,ngModel从mongo返回一个空字段。

当我运行ng build --prod --aot时,我收到以下错误:

TypeError: Cannot create property 'value' on string ''

这里是aot代码:

t.prototype.handleEvent_267 = function(e, t) {
            this.markPathToRootAsCheckOnce();
            var n = !0;
            if (n = this._DefaultValueAccessor_267_3.handleEvent(e, t) && n,
            "ngModelChange" == e) {
                var i = (this.context.pet.chipNumber.value = t) !== !1;
                n = i && n
            }
            return n
        }
有趣的是,在每个其他页面管道存在,它在aot中应该工作。就在这个页面中我得到了这个错误。我使用解析器解析所有路由,因此数据正常,它应该按原样进入。

1 个答案:

答案 0 :(得分:0)

使用此代码问题已解决:

pet.chipNumber = $event

而不是:

pet.chipNumber.value = $event