Question: How can I convert a `HTMLElement` to a `Node` element. 

According to this answer (<https://stackoverflow.com/a/9979779/639035> ) a `An element is one specific type of node`... but I cannot find a way to convert them.

I specifically need a Node element, to pass it into a `MutationObserver` (<https://nitayneeman.com/posts/listening-to-dom-changes-using-mutationobserver-in-angular/> ), and a `HTMLElement` throws an error.

Answer: 
TypeScript only provides type definitions for already existing objects, it can't modify the nature of the object. So, your question is about javascript and not about typescript.

Inside the `lib.dom.d.ts` (the type definition library used by Angular), the `MutationObserver` object is not much correctly defined:

```
interface MutationObserver {
    disconnect(): void;
    observe(target: Node, options: MutationObserverInit): void;
    takeRecords(): MutationRecord[];
}

```

where `target` is defined as `Node` element.

`HTMLElement` is defined inside the same file, and it extends `Element` which extends `Node`. So `HTMLElement` shouldn't have any problem to fit inside the target property.

A better type definition would be: 

```
observe<T extends Node>(target: T, options: MutationObserverInit): void;

```

But since this type definition hasn't been provided, it would be better if you tell the the compiler that it's perfectly fine just passing `element as Node` inside the callback.
You can convert the HTML into a string and then convert the string with this method:

```
const stringHTML = '<div>One</div><div>Two</div>';
const fragment = document.createRange().createContextualFragment(stringHTML);
console.log(fragment);

```

Maybe this link will help: [convert-html-stings-dom-nodes](https://davidwalsh.name/convert-html-stings-dom-nodes)

There is also another method called DOM parser. It is explained in the link. Hope it helps.