title: Why is colspan not a known native attribute in Angular 2?
body: <p>If we attempt code like this:</p>
  
  <pre><code>&lt;td [colspan]="1 + 1"&gt;Column&lt;/td&gt;
  </code></pre>
  
  <p>or this:</p>
  
  <pre><code>&lt;td colspan="{{1 + 1}}"&gt;Column&lt;/td&gt;
  </code></pre>
  
  <p>We soon find out that "<code>colspan</code> is not a known native attribute."</p>
  
  <p>From the A2 docs we learn that:</p>
  
  <blockquote>
    <p>the  element does not have a colspan property. It has the "colspan" attribute, but interpolation and property binding can set only properties, not attributes.</p>
  </blockquote>
  
  <p>We must instead do this:</p>
  
  <pre><code>&lt;td [attr.colspan]="1 + 1"&gt;Column&lt;/td&gt;
  </code></pre>
  
  <p>Which is fair enough.</p>
  
  <h2>Question:</h2>
  
  <p>My question is, why is <code>colspan</code> not an attribute of the DOM, and if it is missing, how can the browser possibly render tables, since the browser renders the DOM and not the HTML?</p>
  
  <p>Also, if I open my Chrome inspector, and go to the properties tab, why can I see colspan as a property of the Element?</p>
  
  <p>Why does the DOM exhibit this inconsistency?</p>