我有这个烟斗:
@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中应该工作。就在这个页面中我得到了这个错误。我使用解析器解析所有路由,因此数据正常,它应该按原样进入。
答案 0 :(得分:0)
使用此代码问题已解决:
pet.chipNumber = $event
而不是:
pet.chipNumber.value = $event