Angular NgRx EntityState-我们可以在状态对象属性上使用EntityState吗
继续我进入Angular NgRx EntityState-我们可以在状态对象属性上使用EntityState吗,angular,ngrx,ngrx-entity,Angular,Ngrx,Ngrx Entity,继续我进入NgRx的新旅程,我刚刚发现了EntityState,如果我理解并试图正确使用它,它涵盖了我需要为我做的所有“收集操作”操作 我遵循了这一点,其中有一个小小的区别,我希望(如果可能的话)对我的状态对象的属性使用EntityState,而不是像链接的示例中那样将其扩展为整个状态对象)。我这样做是为了匹配现有数据,并允许另一个列表属性也是EntityState(如果可以这样使用的话,请再说一遍) 我已替换了一个要素状态对象中的对象数组,但在选择时遇到问题 我有一个简单的版本 在本例之后,状
NgRx
的新旅程,我刚刚发现了EntityState
,如果我理解并试图正确使用它,它涵盖了我需要为我做的所有“收集操作”操作
我遵循了这一点,其中有一个小小的区别,我希望(如果可能的话)对我的状态对象的属性使用EntityState
,而不是像链接的示例中那样将其扩展为整个状态对象)。我这样做是为了匹配现有数据,并允许另一个列表属性也是EntityState
(如果可以这样使用的话,请再说一遍)
我已替换了一个要素状态对象中的对象数组,但在选择时遇到问题
我有一个简单的版本
在本例之后,状态为功能1,为了简单起见,我刚刚将其放入一个文件夹而不是单独的模块中
我的应用程序有一些现有的类,我在这些类中从服务器序列化数据
我已将这些文件放入freature1.reducers.ts文件中
export class BookModel {
public id : string;
public title: string;
}
/** Serialised in from the backend */
export class LibraryBackendModel {
books: Array<BookModel>;
}
我有一个操作getLibrarySuccess
,当新数据从服务器传入时会触发该操作,在reducer文件中,我使用helper方法updateBookList
,它将使用EntityAdapter
上的所有各种方法进行更新(不包括在内,但它们会在那里)
到目前为止,一切似乎都很好
最后,(问题出在哪里)在feature1.component.ts
中,我想订阅选择器getAllBooks
this.store.pipe(select(fromLibrary.getAllBooks),
).subscribe(
books => this.libaryModel.books = books
);
在这里,我可以看到IDE报告了一个问题:
错误是
Type '(state: EntityState<BookModel>) => BookModel[]' is not assignable to type 'BookModel[]'.
但我不知道如何解决这个问题,也不知道我做错了什么。来自feature1.getBooks的
是对booksAdapter.getSelectors()的引用代码>从EntityAdapter
。我假设我需要使用此EntityAdapter
中的选择器来获取我的更新和状态,但我不确定。我发现了我的问题,我只需要进入状态。书籍
如下所示
export const getAllBooks = createSelector(
getFeature1State,
state => fromFeature1.getBooks(state.books) <--- pass in state.books
);
导出常量getAllBooks=createSelector(
getFeature1State,
state=>fromFeature1.getBooks(state.books)
export const getAllBooks = createSelector(
getFeature1State,
state => fromFeature1.getBooks
);
export const getAllBooks = createSelector(
getFeature1State,
state => fromFeature1.getBooks(state.books) <--- pass in state.books
);