代码之家  ›  专栏  ›  技术社区  ›  kovac

ngrx中的可观察数组为空

  •  0
  • kovac  · 技术社区  · 4 年前

    我有一个可观察的数组,它绑定到html中的数据网格,并且运行良好。我的component.ts得到的数组如下:

    this.data = this.store.pipe(select(selectData));
    

    哪里 selectData 这是一个ngrx操作。我试图设置一个值 input 基于数据数组中的第一个值,在数据网格之外。我正在尝试类似的东西

    this.input= this.data.pipe(map(m => 
          moment(new Date(m[0].timestamp / 1000000)).format('DD-MM-YYYY HH:mm:ss')));
    

    当我调试这个时,我可以看到线路上的断点 moment(new Date... 打。然而 m 此时是一个空数组。上述两项声明均在 ngOnInit 喜欢

    ngOnInit(): void {
        this.data = this.store.pipe(select(selectData));
        this.input= this.data.pipe(map(m => 
          moment(new Date(m[0].timestamp / 1000000)).format('DD-MM-YYYY HH:mm:ss')));
      }
    

    看起来在数组实际填充之前,可观测值已经解析,导致 输入 成为 undefined .我怎样才能确保 this.data 当我尝试设置数组时,数组实际上已完全填充 this.input ?

    0 回复  |  直到 4 年前
        1
  •  1
  •   Nicholas K    4 年前

    您需要订阅,以便选择器从存储中获取数据。进行以下更改:

    ngOnInit(): void {
       this.store.pipe(select(selectData))
          .subscribe(m => {
             this.input = moment(new Date(m[0].timestamp / 1000000))
                              .format('DD-MM-YYYY HH:mm:ss');
          });
    }