Say I check it against and expression, then aren\'t these two same ?
{{val}}
Scenario :--> suppose you are using Behaviorsubject, and it emits boolean value "true/false".
Case 1 --> *ngIf --> if Behaviorsubject returns initial value false, then it will disappear that DOM. and even if it emits true value later, it wont be visible.
Case 2 --> Hidden --> it will work perfectly based on Behaviorsubject's emited value. i.e it will toggle the DOM.
Note - *ngIf also toggles the DOM but on user's action or DOM event that toggles value of ngIf.