<html ng-app>
<body>
<p ng-cloak>{{foo}}</p>
</body>
</html>
The way I understand it:
ng-cloak
directive, it applies display: none !important
.display: none !important
rule from things with the ng-cloak
directive.So I understand why things wouldn't be shown from the time the compile phase starts to the end of the link phase. But I don't understand why things wouldn't be shown from the time the HTML is loaded to the start of the compile phase.
It's all explained in the documentation:
[...] When this css rule is loaded by the browser, all html elements (including their children) that are tagged with the ngCloak directive are hidden. When Angular encounters this directive during the compilation of the template it deletes the ngCloak element attribute, making the compiled element visible.