我觉得这可能是一个基本问题,但经过一周的研究,我无法弄清自己到底在搞什么。我承认我不太喜欢Angular(2 ++)。
我正在尝试创建一个简单的CRUD系统。我在数据表的每一行上创建了一个按钮,并为每行添加了单击事件。此事件将在我的服务上调用一个函数,该函数会将我重定向到表单,并使用其数据填充var CurrentIncident。到目前为止,一切都很顺利,我可以从控制台看到预期的数据:
返回的示例数据:
{ description: "This is a test", data1: "Another test", data2: "Another test"}
下一步是使用NgModel在表单上设置2种方式的绑定。所以我在输入中添加了这个。
<input placeholder="Description" value="" [(ngModel)]="CurrentIncident.Description">
但它返回错误:
错误TypeError:无法读取未定义的属性“描述”
有人知道我在搞砸吗?
按钮事件:
<button mat-mini-fab color="accent" (click)="CrudService.Edit_Incident(this.params.data)">
<mat-icon aria-label="Edit">description</mat-icon>
</button>
服务:
import { Injectable } from '@angular/core';
import { Incident_Model } from '../incident_model';
import {Router} from "@angular/router";
@Injectable()
export class CrudService {
constructor(private router: Router) {}
public CurrentIncident: Incident_Model[];
public Edit_Incident(data) {
this.CurrentIncident = data;
this.router.navigate(['form'])
console.log( this.CurrentIncident )
}
}
形成:
<mat-form-field fxFlex="40">
<input matInput placeholder="Description" value="">
</mat-form-field>
最佳答案
在您的CrudService
类中,尽管CurrentIncident
在构造函数中未指定任何值,但它应该是一个数组。
这就是为什么在您的模板中
[(ngModel)]="CurrentIncident.Description"
CurrentIncident
最初是undefined
。最重要的是,假设
CurrentIncident
是一个数组,它将没有Description
属性。给定示例数据,您可能会使用类似[(ngModel)]="CurrentIncident[0].description"
但是仅在
CurrentIncident
初始化之后。为了避免在初始化
CurrentIncident
之前出错,可以使用*ngIf
<input placeholder="Description" value="" [(ngModel)]="CurrentIncident[0].description" *ngIf="CurrentIncident">