title: What are practical scenarios of *ngTemplateOutlet directive?
body: <p>I was reading about <code>*ngTemplateOutlet</code> directive. The use of this directive is to instantiate a template dynamically by a template reference and context object as parameters.</p>
  
  <p>What I want to know is that we have so many things in Angular to achieve the same results as *ngTemplateOutlet such as:</p>
  
  <ol>
  <li><p>We can have multiple <code>*ngIf</code> which could render different templates based on the component variable value within the same component. In a similar fashion we have <code>[ngSwitch]</code> which would render different templates for us based on different values.   </p></li>
  <li><p>We could use references with <code>*ngIf</code> by referring to the template reference variable of the respective variable.</p></li>
  </ol>
  
  <p>For the former case:</p>
  
  <pre><code>&lt;div *ngIf="condition1"&gt; Content 1 &lt;/div&gt;
  &lt;div *ngIf="condition2"&gt; Content 2 &lt;/div&gt;
  &lt;div *ngIf="condition3"&gt; Content 3 &lt;/div&gt;
  </code></pre>
  
  <p>And for latter:</p>
  
  <pre><code>&lt;ng-container *ngIf="condition then myTemplate else otherTemplate"&gt;&lt;/ng-container&gt;
  &lt;ng-template #myTemplate&gt; Some content... &lt;/ng-template&gt;
  &lt;ng-template #otherTemplate&gt; Some content... &lt;/ng-template&gt;
  </code></pre>
  
  <p>If we have such methods in our arsenal what more value does <code>*ngTemplateOutlet</code> add? </p>
  
  <p>What are the practical use cases (if there are any) where we cannot use the above methods and should use <code>*ngTemplateOutlet</code> directive or is it just another method to choose from to achieve the same result?</p>