Виклик crt.DeleteRecordsRequest з Angular компонента

Версія 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 всередині свого компоненту, але не зміг

Нравится

4 комментария

Доброго дня,
Можете показати як саме ви викликаєте 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 компонента можна отримати контекст сторінки?

Показать все комментарии