Директива не обнаружена - PullRequest
0 голосов
/ 30 марта 2020

Я работаю над проектами, которые устанавливают сотни сеток. Поэтому я построил сетку, которая автоматически управляет refre sh на основе действий поиска, сортировки и подкачки, чтобы быть максимально продуктивными.

Это работает очень хорошо.

https://stackblitz.com/edit/angular-observable-grid-problem

Хотелось бы, чтобы он также знал, когда элемент удаляется из этого списка, чтобы вызвать ссылку refre sh. Поэтому я добавил директиву для кнопки удаления, но моя сетка не обнаруживает ее.

Посмотрите в app.component. html:

<button mat-stroked-button type = "button" [delete] = "delete (row)" message = "Do you want delete <b> {{row.lastname}} {{row.firstname}} </b> ({{row.id}})? "> Delete </button>

И в grid.component.ts следующий код никогда не выполняется:

configureDeleters () {
     this.deleters.changes.subscribe (
       (deleters: QueryList <GridDeleteDirective>) => {...});
}

Знаете ли вы, почему?

1 Ответ

0 голосов
/ 08 апреля 2020

хорошо, друг нашел решение.

https://stackblitz.com/edit/angular-observable-grid

Исправьте обнаружение директивы, добавив {lowerndants: true} в grid.component.ts как это:

@ContentChildren(GridDeleteDirective, { descendants: true }) deleters: QueryList<GridDeleteDirective>;

Правильное отслеживание подписок в grid.component.ts как это:

  configureDeleters() {
    this.deleters.changes.subscribe(
      (deleters: QueryList<GridDeleteDirective>) => {
        deleters.map(deleter => {
          deleter.deleted.pipe(take(1)).subscribe(id => {
            if (this.loadCallback != null) {
              _.remove(this.pager["results"], item => item["id"] == id);
              this.items = this.pager["results"];
            } else {
              this.items = _.remove(this.items, item => item["id"] == id);
              this.items = this.items;
            }
          });
        });
      }
    );
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...