It is not very common to see a template system employing live DOM and HTML syntax but this approach turns out to work surprisingly well in practice. People used to other, string-based template engines might need some time to adjust, but after a few initial hops writing DOM-based templates becomes a second nature. There are just a couple of caveats.
Firstly, the syntax for some of the constructs might be a bit verbose. The best example of this slightly annoying syntax for the
ng-switch family of directives some common use cases might simply require a lot of typing. Let's consider a simple example of displaying a different message based on a number of items in a list:
<div ng-switch ...