流:
用户提交带有一些数据的表单,用户未填写的一些可选字段在mongo中保存为"null".
稍后,用户决定编辑该表单.
服务抓取表单并将其显示给用户.
表单输入框显示"null",因为在步骤1中他没有填充它们.
所以,我创建了一个管道:
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但没有运气.
我在这里错过了什么?
随着ngModel
它需要被分成
[ngModel]="user?.extraInfo " (ngModelChange)="user.extraInfo = $event"