Conditional-markup solutions always look inelegant.
I'd bet this looks absolutely crazy to many developers:
<div *ngIf="foo; then bar else baz"></div>
An essentially eval'd code string inside a markup attribute? That uses some made-up language that's neither HTML nor JS?! I used to write plenty of code like this in various template languages, and it always felt bad.