0

我有一个材料数据表,用户可以自己填写和清空。进入表的数据由服务触发,我在表组件中使用ngOnInit().

代码:

  ngOnInit() {
    this._AS.transaction$.subscribe( transaction => {
        this.transaction = transaction;
        this.temp = this.dataSource.data.slice();
        this.temp.push(this.transaction); // Stop this call on init somehow?
        this.dataSource.data = this.temp;
        this.ref.detectChanges();
        console.log(this.transaction);
      }
    );
  }

问题是:总有一个空行被 call 推送this.temp.push(this.transaction)。有没有办法第一次停止这个电话或类似的东西?

4

2 回答 2

0

为什么它是空的,因为“交易”是?那么为什么不直接使用 if 查询呢?或者您可以在父组件中声明一个(布尔)变量,并在您第一次点击 ngOnInit 时将其设置为 true

constructor( public parentComponent: ParentComponent) {

}

ngOnInit() {
  if(parent.isInitialized) {
    this._AS.transaction$.subscribe( transaction => {
      this.transaction = transaction;
      this.temp = this.dataSource.data.slice();

      if(parent.isInitialized) {
        this.temp.push(this.transaction); // Stop this call on init somehow?
      } else {
        parent.isInitialized = true;
      }

      this.dataSource.data = this.temp;
      this.ref.detectChanges();
      console.log(this.transaction);
    } );
}
于 2018-12-19T14:20:41.090 回答
0

我只是使用了另一种方法:将空事务推送到表中后,我将其弹出,以便表再次为空。推送数据现在可以正常工作了。

  ngOnInit() {
      this._AS.transaction$.subscribe(transaction => {
          this.transaction = transaction;
          this.temp = this.dataSource.data.slice();
          this.temp.push(this.transaction);
          this.dataSource.data = this.temp;
          this.ref.detectChanges();
        }
      );
      this.temp = this.dataSource.data.slice();
      this.temp.pop();
      this.dataSource.data = this.temp;
      this.ref.detectChanges();
  }
于 2018-12-19T15:05:11.357 回答