Я не очень люблю Angular и TypeScript (я пришел с Java), и мне нужно решить следующую проблему. Я не знаю, правильное ли решение, которое я думаю использовать, или есть лучшие решения.
В основном у меня есть компонент с именем order-manager.component, который является родительским компонентом, отображающим эти таблицы:
Этот родительский компонент содержит список объектов, представляющих одну строку:
orders: any[];
и в ngOnInit () получить список с помощью службы.
Как вы можете видеть на предыдущем экране, каждая строка моей таблицы может быть расширена, чтобы показать \ отредактировать детали конкретного объекта.
Для этого я использовал подкомпонент сведения о заказе. Итак, в основном в моем родительском компоненте HTML у меня есть что-то вроде этого:
DETTAGLIO ORDINEЭтот подкомпонент сведения о заказе имеет два подкомпонента: один для режима просмотра, а второй для режима редактирования (выделено на предыдущем снимке экрана. ).
Итак, в моем коде этого компонента сведения о заказе у меня просто есть:
<p-selectButton [options]="editOrderOption"
[(ngModel)]="editOrderSelectedOption"
(onChange)="editOrderOptionOnChange($event, orderDetail.id)"></p-selectButton>
<div *ngIf="editOrderSelectedOption=='view';then view_content else edit_content">here is ignored</div>
<ng-template #view_content>
<app-view-order [orderDetail]="orderDetail"></app-view-order>
</ng-template>
<ng-template #edit_content>
<app-update-order [orderDetail]="orderDetail"></app-update-order>
</ng-template>
Обычно пользователь выбирает режим просмотра или редактирования с помощью кнопки выбора, и на странице отображается подкомпонент.
В конкретном случае мы находимся в режиме редактирования, используя этот компонент update-order.
Как вы можете видеть на предыдущем изображении, этот компонент update-order позволяет пользователю редактировать форму, а в конце он содержит кнопку Удалить. Нажав эту кнопку, я хочу удалить объект, представляющий этот порядок (эту строку таблицы) из моей таблицы.
И вот моя проблема. Список объектов, представляющих строки таблицы, определяется в первом родительском компоненте order-manager.component, а кнопка - во вложенном компоненте update-order второго уровня, this это иерархия:
order-manager component
|
|
|---------> order-details component
|
|
|----------------> update-order component
Чтобы решить эту проблему, я подумал, что могу сделать что-то вроде этого:
Пользователь нажимает кнопку Удалить, определенную в подкомпоненте update-order. Это обрабатывается методом, который генерирует событие, содержащее идентификатор текущей строки (это уникальное значение поля объекта.
Я прослушиваю это событие в родительском компоненте order-manager. Когда событие получено, оно удаляется из списка заказов, представляющего список строк моей таблицы.
Как вы думаете, это довольно приличное и изящное решение для достижения этой задачи, или я чего-то упускаю, и есть решения получше?