Extension for formatting Angular 2+ HTML templates. This extension is opinionated and not very configurable.
When run, this extension will put each HTML attribute on its own line—unless there is a single attribute declared on the HTML tag. In the case of a single attribute, the tag and attribute will be put on a single line.
This template from the Angular Tour of Heroes:
<div id="search-component">
<h4>Hero Search</h4>
<input #searchBox id="search-box" (keyup)="search(searchBox.value)" />
<div>
<div *ngFor="let hero of heroes | async"
(click)="gotoDetail(hero)" class="search-result" >
{{hero.name}}
</div>
</div>
</div>
will get formatted to:
<div id="search-component">
<h4>Hero Search</h4>
<input
#searchBox
id="search-box"
(keyup)="search(searchBox.value)"
>
<div>
<div
*ngFor="let hero of heroes | async"
(click)="gotoDetail(hero)"
class="search-result"
>
{{hero.name}}
</div>
</div>
</div>
{
// turn off default vs code formatter
"html.format.enable": false,
// enable formatting by default
"editor.formatOnSave": true,
"editor.formatOnPaste": true
}
Preserves HTML escaped entitities
Does not remove <!DOCTYPE> tags when formatting.
Now formats svgs in templates
Added option for preventing closing tag >
from being on their own line: angular-template-formatter.closeTagSameLine
. Thanks @larscom!
Added an option for tabs vs spaces. Thanks @Empereol!
Added configuration option for indentWidth, defaults to 4.
Initial release of Angular template formatter