#angular #angular6 #angular5 #angular7
#angular #angular6 #angular5 #angular7
Вопрос:
Я использую angular для операции CRUD .
Логические:-
- Я хочу использовать список таблиц и методы редактирования, создания и просмотра, которые я хочу сделать в одной форме.
- Для таблицы я использовал следующий код для кнопок.
КОМПОНЕНТ 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>
Ниже приведена моя таблица.
- Когда мы нажимаем на редактировать, нам нужно показать кнопку СОХРАНИТЬ и ОТМЕНИТЬ
- Когда мы нажимаем на создать, нам нужно показать кнопку СОЗДАТЬ и ОТМЕНИТЬ
- А для просмотра видна только кнопка ОТМЕНЫ
Проблема:-
Я использовал логику, согласно которой, когда идентификатор передается из таблицы, он сохраняется в переменной 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. Нет, мне нужна логика. То, что я использовал, было. Если идентификатор передан, выполните функцию обновления, в противном случае выполните функцию создания. Мы не хотим передавать для создания и должны передавать идентификатор как для редактирования, так и для просмотра. Теперь, когда я нажимаю на представление, идентификатор переходит к компоненту и показывает форму редактирования. В случае редактирования и просмотра я не знаю, как писать.