[英]How to use *ngif for [value]?
我下面有用于在ionic 3中添加业务页面的html代码。在哪里使用[(ngModel)]="businessData.name"
获取输入数据。 为了编辑业务,我使用了相同的页面,在该页面上,我所有的输入都使用[value]="savedbusinessData.name"
填充,无论数据是通过mybusiness api
获得的,例如公司名称或电子邮件等。但是现在编辑业务可以正常使用,但是当新用户使用时去添加业务页面我收到ERROR TypeError: Cannot read property 'name' of undefined
由于[value]="savedbusinessData.name"
ERROR TypeError: Cannot read property 'name' of undefined
。 为了解决这个问题,我尝试使用此输入的*ngIf="!savedbusinessData == ''"
消失了。 那么如何在这里使用ngif或任何其他解决方案?
<ion-content padding>
<div class="addbusiness">
<ion-item>
<p (click)="addCata()">Select Category</p>
<!-- <p class="adedcat">{{htmlContent}}</p> -->
<ion-tags-input [separatorStr]="','" [once]="'true'" [canBackspaceRemove]="false" [canEnterAdd]="false" [(ngModel)]="catatags" (onChange)="onChange($event)"></ion-tags-input>
<!-- <p (click)="clearcat()">Clear All</p> -->
</ion-item>
<ion-item>
<ion-input *ngIf="!savedbusinessData == ''" [value]="savedbusinessData.name" [(ngModel)]="businessData.name" type="text" placeholder="Name"></ion-input>
</ion-item>
<ion-item>
<ion-input [value]="savedbusinessData.contact" [(ngModel)]="businessData.contact" type="number" placeholder="Contact Number"></ion-input>
</ion-item>
<ion-item>
<ion-input [value]="savedbusinessData.address" [(ngModel)]="businessData.address" type="text" placeholder="Adress"></ion-input>
</ion-item>
<ion-item>
<ion-input [value]="savedbusinessData.website" [(ngModel)]="businessData.website" type="text" placeholder="Website"></ion-input>
</ion-item>
<ion-item>
<ion-input [value]="savedbusinessData.email" [(ngModel)]="businessData.email" type="email" placeholder="Email"></ion-input>
</ion-item>
<ion-item>
<ion-input [value]="savedbusinessData.about" [(ngModel)]="businessData.about" type="text" placeholder="About"></ion-input>
</ion-item>
<ion-item>
<ion-input [value]="tags" [(ngModel)]="businessData.tags" type="text" placeholder="Tags"></ion-input>
</ion-item>
<button class="busiadd" (click)="addBusiness()" ion-button>Submit</button>
</div>
</ion-content>
我强烈建议使用Angulars反应形式。 在相关模块中导入ReactiveFormsModule
。 删除所有[(ngModel)]
并将所有input
放入这样的表单标签中
<form [formGroup]="myForm" (ngSubmit)="save(myForm.value)"></form>
然后删除[value]属性。 将formControlName =“ name” /“ contact”等添加到输入标签。 在您的TS中创建它,如下所示
myForm: FormGroup;
constructor(private fb: FormBuilder) {
this.myForm = this.fb.group({
name: '',
contact: '',
// ...etc
});
}
当您的数据到达时,您可以使用
this.myForm.patchValue(data);
它仅修补匹配的属性。 其他人将被忽略。 另外,不要忘记从此处可以处理表单数据的位置创建保存功能。
function save(formData: YourDataType) {
// handle formData here
}
采用 ?。 空检查。
[value]="savedBusinessData?.name"
如果要隐藏输入,请使用。
<ion-item *ngIf="savedBusinessData !== undefined">
<ion-input [value]="savedBusinessData?.name"></ion-input>
</ion-item>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.