Невозможно удалить или объединить строку из JSON - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь удалить пользователя из функции черного списка. Когда они удаляют пользователя из списка, он должен склеить / удалить эту строку JSON и обновить таблицу соответствий в angular.

Я пробовал delete this.blacklistGroupTable[i], но это возвращает объект JSON без изменений.

Я также попробовал this.blacklistGroupTable.splice (i, 1); , но там написано _this.blacklistGroupTable.splice is not a function

Почему это?

enter image description here

unblockUser(userId: string, username: string, i: number) {
    const dialogRef = this.dialog.open(ConfirmationBlacklistComponent, {
      panelClass: "dialogBoxStyler",
      data: {
        username: username
      }
    });

    dialogRef
      .afterClosed()
      .pipe(takeUntil(this.destroy))
      .subscribe(result => {
        if (result) {
          alert("I: " + i);
          this.blacklistGroupTable.splice(i, 1);
          //  delete this.blacklistGroupTable[i];
          console.log("this.blacklistGroupTable");
          console.log(this.blacklistGroupTable);
          this.dataSource.data = this.blacklistGroupTable;

          this.submitListingService
            .sendUserToBlacklist(this.userId, this.bidderId, "UNBLOCK")
            .pipe(takeUntil(this.destroy))
            .subscribe(res => {
              console.log("res");
              console.log(res);
            });
        } else {
          this.blacklistUserDecision = false;
          return;
        }
      });
  }

1 Ответ

1 голос
/ 17 апреля 2020

я думаю, что ваш blacklistGroupTable не array, а FileList.

A FileList не Array, но он соответствует своему контракту (имеет length и нумерация c (индексы), поэтому мы можем «заимствовать» Array методы:

попробуйте сделать так, чтобы ваши файлы отдельно регистрировались:

Array.prototype.forEach.call(this.blacklistGroupTable, file => {console.log(file)});

и результат этого журнала: https://postimg.cc/WttmxR60 означает, что ваш blacklistGroupTable является filelist из objects! это больше не array, вы можете удалить свои элементы следующим образом:

const files = [...this.blacklistGroupTable['blacklistGroup']]; 
files.splice(i, 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...