簡體   English   中英

NgRx 數據服務更新刪除 object 原型,而不是更新更改的字段

[英]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 這是運行上述語句后控制台的屏幕截圖:

Todo 原型已消失

這會導致意外行為。

TL;DR:我們如何確保更新不會刪除原型? 如果這不可能,是否有一種簡單的方法可以在更新到達商店之前攔截更新,以提供自定義實現?

此行為旨在查看以下 GitHub 問題以獲取更多信息。 https://github.com/ngrx/platform/issues/1641

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM