Actually, the element is cloned; we would need the opposite. If we take a look at the HTML markup of your original example we see:
<div class="b-sch-event-content" role="presentation" data-task-bar-feature="content">
<app-scheduling-board-event _nghost-ng-c3939846535="" ng-version="17.3.12">
<div _ngcontent-ng-c3939846535="">
<p _ngcontent-ng-c3939846535="">First Task</p>
</div><!--ng-container--><!--bindings={
"ng-reflect-ng-if": "[object Object]"
}--><!--container-->
</app-scheduling-board-event>
</div>
so the custom element app-scheduling-board-event
doesn't even have any usable attributes and as such cannot be fully cloned by JavaScript because JavaScript is agnostic of Angular running behind and cannot invoke an Angular functionality. In fact, at the time of dragging the Angular has already been transpiled into JavaScript.
The cloning is actually creating a new element with same tag and attributes.
However, if the markup would be:
<app-scheduling-board-event text="First Task"></app-scheduling-board-event>
then cloning boils down to cloning a HTML element and having all necessary attributes thereof.
(If we have constrainDragToTimeline: true
then no cloning takes place and we drag the original.)