логика для работы с CRUD

#angular #angular6 #angular5 #angular7

#angular #angular6 #angular5 #angular7

Вопрос:

Я использую angular для операции CRUD .

Логические:-

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

КОМПОНЕНТ HTML ТАБЛИЦЫ

     <button type="button" pButton icon="fa fa-plus"class="ui-button-success" label="New" [routerLink]="['/master/productcategory']"> 
    </button>
    <button type="button" pButton icon="fa fa-pencil" iconPos="left" class="ui-button-success" [routerLink]="['/master/productcategory/edit',productcategory.id]">
    </button>
    <button type="button" pButton icon="fa fa-eye" iconPos="left" class="ui-button-success" [routerLink]="['/master/productcategory/view',productcategory.id]"> 
    </button>
 

Ниже приведена моя таблица.

введите описание изображения здесь

  1. Когда мы нажимаем на редактировать, нам нужно показать кнопку СОХРАНИТЬ и ОТМЕНИТЬ

введите описание изображения здесь

  1. Когда мы нажимаем на создать, нам нужно показать кнопку СОЗДАТЬ и ОТМЕНИТЬ

введите описание изображения здесь

  1. А для просмотра видна только кнопка ОТМЕНЫ

Проблема:-

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

Затем, используя условие if else, я написал, что,

IF (productCategoryIdToUpdate === null ) затем выполните функцию CREATE. В противном случае выполните функцию обновления.

Теперь мне нужно передать идентификатор как для редактирования, так и для просмотра. Из-за логики, которую я написал, та же форма редактирования отображается и в форме просмотра.

Как я могу написать логику для редактирования и просмотра? Кто-нибудь может мне помочь??

** ФОРМА HTML:-**

     <div class="ui-grid-col-1">
        <button type="submit" pButton label="Create" 
          [disabled]="!productCategoryForm.valid" 
          *ngIf="!productCategoryIdToUpdate">
        </button>
        <button type="submit" pButton label="Save" 
          [disabled]="!productCategoryForm.valid" 
          *ngIf="productCategoryIdToUpdate">
        </button>
     </div>
     <div class="ui-grid-col-1">
        <button type="button" class="ui-button-secondary" pButton 
            label="Cancel" (click)="backToCreateProductCategories()"> 
        </button>
      </div>
 

КОМПОНЕНТ ФОРМЫ.TS

 onProductCategoryFormSubmit() {
    if (this.productCategoryForm.invalid) {
        return; 
    }
   let productCategory = this.productCategoryForm.value;
   if (this.productCategoryIdToUpdate === null) {
     //Create product
       this.service.createProductCategory(productCategory).subscribe(
        successCode => {
         this.messageService.add({ severity: 'success', summary: 'Success', detail: 'Product Created' });
      this.backToCreateProductCategories() ;
      }
     );
  } else {
  //Handle update product
     productCategory.id = this.productCategoryIdToUpdate;
     this.service.updateProductCategory(productCategory).subscribe(
       successCode => {
        this.messageService.add({ severity: 'success', summary: 'Success', detail: 'Product Editted' });
     }
   );
  }
 }
 

Чтобы вернуться к таблице (кнопка отмены)

     backToCreateProductCategories() {
       this.productCategoryIdToUpdate = null;
       this.router.navigate(['/master/productcategories']);
    }
 

Комментарии:

1. вы можете попробовать использовать такие флаги, как «isEditing» «isAdding» и привязать [enabled]="isAdding" или [enabled]="isEditing" к компоненту.. обновите их (click) для действий и отмените.. должно быть хорошо и просто

2. Можете ли вы мне помочь?? как использовать флаги??

3. Можете ли вы разработать его или просто предоставить короткий код

4. Я добавил образец кода stackblitz в ответ, если вы взаимодействуете с кнопками add , edit и cancel вы должны увидеть результат отключения / включения кнопок.

Ответ №1:

Один из способов сделать это — использовать флаги, свойства, которые можно использовать для изменения поведения на основе взаимодействия с пользователем.

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

В этом сценарии вы можете использовать isAdding и isEditing для включения и отключения кнопок по своему усмотрению.

в вашем компоненте:

 isEditing = false;
isAdding = false;

  onAdd() {
    this.isAdding = true;

    // your logic goes here
  }

  onEdit() {
    this.isEditing = true;

    // your logic goes here
  }

  onCancel() {
    this.isAdding = false;
    this.isEditing = false;
  }
 

на ваш взгляд:

 <button [disabled]="isEditing" (click)="onAdd()">Add</button>
<button [disabled]="isAdding" (click)="onEdit()">Edit</button>
<button (click)="onCancel" (click)="onCancel()">Cancel</button>

 

Это понятно? Как применить к вашему сценарию?

Я добавил простой пример здесь

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

Комментарии:

1. Спасибо за ваш ответ. Но в моем случае мы не можем написать функцию click в button. Таблица находится в компоненте, а форма — в другом компоненте. Кнопка РЕДАКТИРОВАНИЯ, СОЗДАНИЯ и СОЗДАНИЯ находится в таблице, и мы передаем идентификатор через маршрутизацию в форму. Основываясь на этом, я написал функцию в компоненте формы.

2. что ж, тогда ваш вопрос касается не angular, а компонента, который вы используете, и вы разместили html для кнопок.. так что я не совсем понимаю.. это onAdd ваша заявка.. в худшем случае создайте рабочий пример на stackblitz.. чтобы люди могли его воспроизвести

3. Нет, мне нужна логика. То, что я использовал, было. Если идентификатор передан, выполните функцию обновления, в противном случае выполните функцию создания. Мы не хотим передавать для создания и должны передавать идентификатор как для редактирования, так и для просмотра. Теперь, когда я нажимаю на представление, идентификатор переходит к компоненту и показывает форму редактирования. В случае редактирования и просмотра я не знаю, как писать.