Строки таблицы удаляются, если нет совпадений с тем, что ты ввёл в поиске (devexpress). Как заблокировать удаление строк?

Для того чтобы заблокировать удаление строк в таблице в Angular, когда не найдены совпадения с введенным значением в поисковой строке, есть несколько подходов, в зависимости от того какой функционал и логику вы хотите реализовать.

1. Использование флага или переменной: Вы можете использовать флаг или переменную, которая будет отвечать за состояние таблицы и наличие совпадений. Если флаг установлен, то строки не будут удаляться при отсутствии совпадений.

Примерный код может выглядеть следующим образом:

// В компоненте
public shouldRemoveRows: boolean = true;

// В шаблоне
<input type="text" [(ngModel)]="searchText" (ngModelChange)="onSearchChange()">
<table>
  <tr *ngFor="let row of tableData">
    <!-- ваш код строки таблицы -->
  </tr>
</table>

// В методах компонента
onSearchChange() {
  if (this.searchText !== 'devexpress') {
    this.shouldRemoveRows = false;
  } else {
    this.shouldRemoveRows = true;
  }
}

2. Использование условного оператора ngIf: Вы можете использовать директиву ngIf для условного отображения строк таблицы на основе наличия совпадений с введенным значением.

Примерный код может выглядеть следующим образом:

// В компоненте
public searchText: string = '';

// В шаблоне
<input type="text" [(ngModel)]="searchText">
<table>
  <tr *ngFor="let row of tableData" *ngIf="searchText === 'devexpress' || searchText === ''">
    <!-- ваш код строки таблицы -->
  </tr>
</table>

3. Использование кастомной директивы: Вы можете создать кастомную директиву, которая будет контролировать удаление строк и отображение таблицы на основе условий.

Примерный код может выглядеть следующим образом:

// В директиве
import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';

@Directive({
  selector: '[appTableRemoveDirective]'
})
export class TableRemoveDirective {
  private hasMatches: boolean = false;

  constructor(
    private templateRef: TemplateRef<any>,
    private viewContainerRef: ViewContainerRef
  ) { }

  @Input()
  set appTableRemoveDirective(value: string) {
    if (value === 'devexpress' || value === '') {
      this.hasMatches = true;
      this.viewContainerRef.createEmbeddedView(this.templateRef);
    } else {
      this.hasMatches = false;
      this.viewContainerRef.clear();
    }
  }
}

// В компоненте
public searchText: string = '';

// В шаблоне
<input type="text" [(ngModel)]="searchText">
<table>
  <tr *appTableRemoveDirective="searchText">
    <!-- ваш код строки таблицы -->
  </tr>
</table>

Это лишь несколько способов реализации блокировки удаления строк в Angular, когда не найдены совпадения с введенным значением в поисковой строке. Вы можете выбрать любой из подходов, который лучше всего соответствует вашим требованиям и логике приложения.