Версія Creatio: 8.1.0.6672
Добрий день! В мене стоїть наступна задача: Необхідно розширити базову логіку роботи деталі з файлами, добавивши на неї певну функціональність. Так як немає можливості замістити базовий компонент деталі з файлами, вирішив реалізувати свій простий аналог, дойшов до моменту, коли потрібно реалізувати виклик базового метода crt.DeleteRecordsRequest, щоб повторити логіку видалення запису.
Намагаюсь зробити виклик за допомогою методу HandlerChainService.instance.process з @creatio-devkit/common, але отримую наступну помилку
Намагався в своєму проєкті зареєструвати SCHEMA_VIEW_MASK_TOKEN таким чином
... export const SCHEMA_VIEW_MASK_TOKEN = new InjectionToken('SCHEMA_VIEW_MASK_TOKEN'); ... @NgModule({ declarations: [BnzFileDetailComponent], imports: [BrowserModule, MatIconModule, MatButtonModule, MatCardModule, MatMenuModule], providers: [{ provide: SCHEMA_VIEW_MASK_TOKEN, useValue: 'value' }], })
Але воно навідь й цього не бачить
Як можна виправити цю помилку?
Angular проєкт створював на основі статьї https://academy.creatio.com/docs/developer/front_end_development_freedom_ui/remote_module/implement_a_remote_module/overview використовуючи приклади для "For Creatio version 8.0.8 and later."
Також може підскажете, чи можна десь подивитись відкритий код angular компонентів creatio, щоб зрозуміти як правильно будувати свої компоненти? А то мінімізований код не дуже зручно дивитись :)
Або як можна використовувати crt компоненти в середині свого компоненту? Намагався вивести crt-file-list всередині свого компоненту, але не зміг
Нравится
Доброго дня,
Можете показати як саме ви викликаєте crt.DeleteRecordsRequest, як саме ви використовуєте HandlerChainService?
Дима Вовченко,
Добрий день! Виклик робив приблизно так
import { HandlerChainService, } from '@creatio-devkit/common'; ... /// в компоненті при натисканні на кнопку видалення onDeleteButtonClick() { HandlerChainService.instance.process(new DeleteRecordsRequest("...", [...])); } ... class DeleteRecordsRequest extends BaseRequest { override type = 'crt.DeleteRecordsRequest'; public dataSourceName: string; public recordIds: Array<string>; constructor(dataSourceName: string, recordIds: Array<string>) { super(); this.dataSourceName = dataSourceName; this.recordIds = recordIds; } }
На томість я пішов іншим шляхом й визиваю свій обробник на сторінці, який в свою чергу вже викликає crt.DeleteRecordsRequest. Знаю що не вірно так робити, але іншого шляху не знайшов
В ангуляр компоненті виклик методу працює таким самим чином як і на сторінці, себто так:
await handlerChain.process({ type: 'crt.DeleteRecordsRequest', $context: request.$context //Set context //Other params });
Головне правильно передавати контекст.
Дима Вовченко,
Яким чином з Angular компонента можна отримати контекст сторінки?