Удалить данные по идентификатору - PullRequest
0 голосов
/ 24 сентября 2019

На самом деле я хочу удалить данные из списка.Но у меня проблема с мусором с этим кодом.

Код компонента

removeSelectedRows(){
    console.log(this.selection.selected.map(item => item.userId))
    const selectedRowIds = this.selection.selected.map(item => item.userId);
       console.log(selectedRowIds)
      this.UserService.deleteUser(selectedRowIds).subscribe(res =>{
        this.dataSource.data = this.dataSource.data.filter(data => data.userId !== selectedRowIds);
      }, err =>{
        console.error(err);  
      }, ()=>{
        // this.clearUserForm();
        this.loadUsers(this.pageIndex);
      });
  }

И из этой части выходит ошибка this.UserService.deleteUser(selectedRowIds).subscribe(res =>{ this.dataSource.data = this.dataSource.data.filter(data => data.userId !== selectedRowIds).

selectRowIds ошибка выходит

Аргумент типа 'string []' нельзя назначить параметру типа 'string'

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Я нашел ответ, и он решил мою проблему

Код компонента

selectedRow: any;

removeSelectedRows(){
    console.log(this.selectedRow.userId)
       this.UserService.deleteUser(this.selectedRow.userId).subscribe(res =>{
        this.dataSource.data = this.dataSource.data.filter(data => data.userId!== this.selectedRow.userId);
      }, err =>{
        console.error(err);  
      }, ()=>{
        this.ngOnInit();
        this.loadUsers(this.pageIndex);
      });
  }
0 голосов
/ 24 сентября 2019

selectedRowIds - это массив.Таким образом, вы не можете сравнить string с array of strings.Возможно, вы можете использовать Array.includes()

this.dataSource.data.filter(data => !selectedRowIds.includes(data.userId))

Надеюсь, это поможет.


Обновление

Этотолько предположение, так как я не знаю содержания метода deleteUser.Метод сервиса, кажется, ожидает один идентификатор пользователя.Поэтому вам нужно либо перебрать выбранные идентификаторы, либо изменить метод сервиса, чтобы он принимал массив идентификаторов.Но будьте осторожны, если вы выполняете итерацию по массиву и делаете отдельные вызовы для каждого пользователя, и если он вызывает конечную точку API, это может вызвать нежелательное поведение.

selectedRowIds.forEach((selectedID) => {

    this.UserService.deleteUser(selectedID).subscribe(res =>{
    //                            ^^ Here's a single ID

        this.dataSource.data = this.dataSource.data.filter(data => data.userId !== selectedID);
    //                                                                 ^^^^^^^^^^^^^^^^ filter by selectedID
      }, err =>{
        console.error(err);  
      }, ()=>{
        // this.clearUserForm();
        this.loadUsers(this.pageIndex);
      }
    );
});

Но я не рекомендую этот способ.Это может вызвать несколько вызовов API (если вы используете любой)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...