Функция, вызываемая функцией подписки, запускается дважды.
Издатель используется не в функции активации или присоединения, а в асинхронной функции c другого класса. Оба класса получают один и тот же EventAggregator через связывание. Console.Trace () имеет одинаковые маршруты в обоих случаях. Набор «Публикация / подписка» уникален и не используется никакими другими классами.
async sender(item:any):Promise<void> {
this.dialogService.open({
viewModel: CaModalConfirm,
model: {
color: this.color
}
}).whenClosed(async response => {
if (response.wasCancelled === false) {
this.moduleName = params.params.moduleId;
await this.selectionEventAggregator.publish('requestSelection',{item: item});
this.elementEventAggregator.publish('hideSidebar');
}
});
}
---------------------------------------------
attached() {
this.subscriptions.push(
this.selectionEventAggregator.subscribe(
'requestSelection',
params => this.sendSelection(params)
)
);
}
sendSelection(params):void {
console.trace(params);
this.selectionEventAggregator.publish(
'sendSelected',
{
selection: this.itemSelection,
item: params.item
}
);
}