![](/img/trans.png)
[英]How do I pass two different pieces of state from my ngrx effect to my service function?
[英]How do I automatically refresh my PrimeNG table from data from my ngrx/data service?
我正在使用 Angular 13 和 ngrx/data、store 和 entity (v.13)。 我已經設置了我的 ngrx/data 服務
export class MyObjService extends DefaultDataService<MyObject> {
...
}
然后是使用 PrimeNg 的組件。 我有一張桌子來展示我所有的物品......
<p-table #dt [value]="(myObjects$ | async)!" ...
服務文件包含在其中
constructor(
...
private service: MyObjService,
) {
...
this.myObjects$ = this.service.getAll();
問題是每次我執行更改后端存儲的操作時,例如刪除
del(id: number){
this.myObjService.delete(id)
.subscribe(_ => {
this.MyObjects$ = this.myObjService.getAll();
} );
我必須刷新表格(我必須在上面調用“this.myObjects$ = this.myObjService.getAll();”)。 有沒有辦法可以設置表格,使表格中的數據自動刷新? 我覺得這是 ngrx/data 允許我做的事情,但不確定它是如何完成的。
首先,您可以向服務中添加一個方法來監聽事件:假設您有一個包含表數據的object
。 假設Category
是一個帶有id
、 name
和所有數據字段的 object 。 然后您可以從rxjs
import
Subject ,這是一個可觀察的。 在您的service.ts文件中:
export class CategoriesService {
private categories:Category[] = [];
private categoryUpdated = new Subject<Category[]>();
然后你可以添加一個方法作為中間件:
getUpdateListener(){
return this.categoryUpdated.asObservable();
}
然后 go 到您的category.ts
文件:從rxjs
導入訂閱並將其存儲在變量中。
export class CategoriesComponent implements OnInit{
categories : Category[] = [];
category : Category;
private categorySub : Subscription;
然后是構造函數:
constructor(private _categoriesService : CategoriesService){}
在ngOnInit
中,我們首先從服務文件中獲取Category
。 就像您正在獲取數據一樣。 然后我們在subscription
中執行我們的觀察。我們通過它設置 object 值。
ngOnInit(){
this._categoriesService.getCategories();
this.categorySub = this._categoriesService.getUpdateListener().subscribe((cate: Category[])=>{
this.categories = cate;
})
}
那么你就不需要再使用其他 observable 了,它會處理一切。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.