データをテーブルに挿入するフォームがあります。テーブルからデータを削除すると、データは削除されますが、テーブルの行は削除されません。 データは双方向バインディングなので、データは削除されますが、html構造は同じままです。データが変更されたときに角度2のテンプレートを更新できません
コンポーネント
export class HomeComponent implements OnInit {
studentform = new FormGroup({
id: new FormControl(),
name: new FormControl(),
address: new FormControl()
});
student: Student[]=[];
std: Student= new Student();
constructor(public homeService: HomeService){ }
OnInit(){
this.getData();
}
getData(){
this.student = this.homeService.GetData();
}
onEdit(id:number){
console.log("Edit:" + id);
}
onDelete(id:number){
this.homeService.delete(id);
this.getData();
}
Save(model:Student){
this.homeService.SaveData(model);
this.studentform.reset();
this.getData();
}
}
サービス
div class="col-md-6">
<h5> Lists </h5>
<table>
<th>ID </th>
<th>Name </th>
<th>Address </th>
<th>Edit </th>
<th>Delete </th>
<tr *ngFor="let x of student">
<td> {{ x.id }} </td>
<td> {{ x.name }} </td>
<td> {{ x.address }} </td>
<td (click)="onEdit(x.id)"> Edit </td>
<td (click)="onDelete(x.id)"> Delete </td>
</tr>
</table>
は私がHTML(テンプレート)のデータ変更を更新ヘルプ
@Injectable()
export class HomeService{
student:Student[]=[];
SaveData(model:Student){
this.student.push(model);
}
GetData(){
return this.student;
}
delete(id:number){
for(var i=0;i<this.student.length;i++){
if(this.student[i].id==id){
delete this.student[i]
}
}
}
}
テンプレート。私は、テーブルをクリックした後
これが結果です:データがなくなっていますが、行は
@echonax、そのデータについてではなく、その約ビュー、データは更新されていませんビューです。 行を削除するには、削除をクリックするとビューが再びレンダリングされますか?私はそうは思わない、空行がある理由。 私は明確にするのを助けてください – user35
あなたが正しくなっているエラーを参照してください?あなたのhtmlで 'undefined'の' id'を選択しようとします。上記のリンクで2番目の解決策を試してください。 – echonax
@echonax、データを追加、削除をクリック:エラーなし、データを追加追加:エラーが発生しました。 エラーが表示されなくても空の行が残っています。 – user35