【发布时间】:2019-05-01 22:13:04
【问题描述】:
我正在使用 ngrx 和 angular。 我有一个组件,它在模块“A”中有一个下拉菜单。在更改下拉列表时,我在我的 ngrx 商店中设置了选定的值。
现在我在模块“B”中有一个网格组件。我的任务是用数据集填充网格(根据保存的下拉 ID 进行过滤)。
我能够在我的沙盒中获取数据集。这个 Sandox 只不过是一个层 b/w 组件和存储
public getAllDevices(): Observable<Array<Device>> {
return this.appStateManager.getFromStore(state => state.serviceProviderState.devices);
}
devices$ =this.appStateManager.getFromStore<ServiceProvider>(state =>
state.serviceProviderState.selectedServiceProvider)
.subscribe(data=>{
this.deviceService.getAllDevices(data.id)
.subscribe((devices: Array<Device>) => {
console.log(devices);
this.appStateManager.saveToStore(new SetAllDevices(devices));
});
});
在上面的代码中,我从 appStateManager 获取数据,这不过是 store api 的包装器。然后在获得 selectedId 之后,我调用了 getAllDevices,它给了我一个过滤的数据集。我可以在 console.log 中看到我想要的数据集。
现在我需要在我的网格中显示这个设备$。为此我编写了如下代码:
@Component({
selector: 'device-list',
template: '<data-grid [devices]="devices"></data-grid>',
})
export class DeviceListContainer implements OnInit {
devices: Device[];
devices$= this.monitoring.devices$;
constructor(private monitoring: MonitoringSandbox) {
this.monitoring.getAllDevices().subscribe((data)=>{
this.devices=data;
console.log(this.devices);
})
}
我的网格没有被填满。我哪里出错了?
【问题讨论】: