[英]NgRx Data service Update removes object prototype instead of updating the changed fields
當我的 NgRx DefaultDataService 更新時,它會刪除存儲中對象的類型/原型。 這些對象不再是 Todo 類型,而是沒有原型的簡單對象。
對象來自服務器作為符合 Todo接口的 json 對象。 我 pipe 將它們作為 Todo對象輸入到存儲中,如下所示:
@Injectable()
export class TodosDataService extends DefaultDataService<ITodo> {
baseUrl;
constructor( http: HttpClient, httpUrlGenerator: HttpUrlGenerator) {
super("Todos", http, httpUrlGenerator);
}
getAll(): Observable<Todo[]> {
//HERE - the ITodo[] from server is mapped to Todo[], then saved to store
return super.getAll().pipe(
map(todosList => todosList.map(todoData => new Todo(todoData)))
);
}
但是在此服務的 update() 覆蓋方法上管道它們不起作用:
update(updatedTodo: Update<Todo>): Observable<Todo> {
return super.update(updatedTodo).pipe(map(data => new Todo(data)));
}
注意:我也嘗試過手動使用我自己的 httpClient.put 請求,而不使用 DefaultDataService 的超級調用和其他幾種方式。
問題在於,當ngrx 將增量(更改)應用於商店中的 object 時,它在某種程度上不再是待辦事項 object 。 這是運行上述語句后控制台的屏幕截圖:
這會導致意外行為。
TL;DR:我們如何確保更新不會刪除原型? 如果這不可能,是否有一種簡單的方法可以在更新到達商店之前攔截更新,以提供自定義實現?
此行為旨在查看以下 GitHub 問題以獲取更多信息。 https://github.com/ngrx/platform/issues/1641
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.