2016-06-21 76 views
2

我有一個*ngFor指令的陣列時使用在陣列中顯示每個元件的組件的重複值: -ngFor改變對象

<app-user-row *ngFor="let user of users" 
       [user]="user" 
       (update)="updateUsers()"></app-user-row> 

如果這些部件中的一個觸發一個update事件,則主機組件將調用一個服務,該服務命中一個服務器並以數組形式獲取數據的最新副本。這也得到呼籲ngOnInit得到inital數據

private updateUsers() { 
    this.userManagementService.getUsers().subscribe((res) => { 
    this.users = res; 
    }, 
    (error) => { 
    console.log(error); 
    }); 
} 

然而,這似乎是新的數據,預先準備的舊的頂部。例如,如果我有2行,一個是安迪,一個是鮑勃,我刪除鮑勃行,現在我會看到安迪,安迪,鮑勃。此時,我的用戶數組也將只包含Andy的單個條目。我對Angular2很新,我錯過了什麼?

編輯:這是服務的方法,做了刪除:

public deleteUser(user:User){ 

    let headers = new Headers({ 
    'Accept': 'application/json' 
    }); 
    let options = new RequestOptions({headers}); 

    return this.http.delete(`${this.apiBaseUrl}Account/user/${user.id}`, options); 

} 

並調用它(在UserRowComponent)功能:我跟蹤的

onDelete() { 
    this.userManagementService.deleteUser(this.user).subscribe((res) => { 
    this.update.emit(this.user); 
    }, 
    (error) => { 

    }); 

}

+0

*「我刪除了Bob行...」 - - 你怎麼做到的? – dfsq

+0

服務命中REST Web服務以刪除用戶,並且組件在請求完成時觸發'update'事件,該事件獲取用戶數據的新副本。 –

+0

請向我們展示刪除用戶的刪除方法或更新事件。 – rinukkusu

回答

1

發行下來。這是我的一套完整起來:

<div class="table"> 
    <div class="tr"> 
    <span class="td th">User Name</span> 
    <span class="td th">Change Password</span> 
    <span class="td th">User Permissions</span> 
    <span class="td th">Admin Permissions</span> 
    <span class="td th"></span> 
    <span class="td th"></span> 
    </div> 
    <app-user-row *ngFor="let user of users" [user]="user" (update)="updateUsers()"></app-user-row> 
</div> 

因爲我模仿一個表的結構,並希望得到app-user-row組件作爲一個錶行正確顯示,我使用類似的方法討論here ,這似乎與*ngFor不搭配。我想我將不得不重新考慮我的佈局。