Удалить пустую строку, созданную подпиской на сервис в ngOnInit () - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть таблица данных материала, которую пользователь может заполнить и очистить самостоятельно.Данные, которые попадают в таблицу, запускаются службой, которую я инициализировал в компоненте таблицы с 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);
      }
    );
  }

Проблема в том, что всегда есть пустая строка, которую нажимает вызов this.temp.push(this.transaction).Есть ли способ остановить этот вызов в первый раз или что-то подобное?

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Я просто использовал альтернативный способ: после помещения пустой транзакции в таблицу, я ее потом выталкиваю, чтобы таблица снова стала пустой.Pushing data теперь работает без проблем.

  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();
  }
0 голосов
/ 19 декабря 2018

Почему он пуст, потому что «транзакция»?Так почему бы вам просто не использовать запрос if?Или вы можете объявить переменную (bool) в родительском компоненте и установить для нее значение true при первом нажатии ngOnInit

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);
    } );
}
...