title: Angular 2 child component not detecting changes correctly
body: <p>Plunker with an example:
  <a href="https://plnkr.co/edit/aWUE54EUMIm8rnw3PZOO?p=preview" rel="nofollow">https://plnkr.co/edit/aWUE54EUMIm8rnw3PZOO?p=preview</a></p>
  
  <p>First button increments the value. If the value is less than 10 the button should be enabled otherwise it should disable itself.
  The second button resets the value to 0.</p>
  
  <pre><code>this.button1 = new ButtonAction(
    "info",
    "check",
    "right",
    "Click me!",
    "medium",
    true,
    true,
    new Command(
      () =&gt; this.val += 1,
      () =&gt; {
        return this.val &lt; 10;
      }
    ),
    false
  );
  
  this.button2 = new ButtonAction(
    "info",
    "check",
    "right",
    "Reset first button!",
    "medium",
    true,
    true,
    new Command(
      () =&gt; this.val = 0,
      null
    ),
    false
  );
  </code></pre>
  
  <p>When the value reaches 10 the first button indeed disables itself but when I reset the value to 0 it doesn't get updated even though everything is looking ok in the output:</p>
  
  <pre><code>Marked for check with value 7
  btnClass: btn btn-outline-info btn-block
  isDisabled: false
  Marked for check with value 8
  btnClass: btn btn-outline-info btn-block
  isDisabled: false
  Marked for check with value 9
  btnClass: btn btn-outline-info btn-block
  isDisabled: false
  Marked for check with value 10
  btnClass: btn btn-outline-info btn-block disabled
  isDisabled: true
  Marked for check with value 0
  btnClass: btn btn-outline-info btn-block
  isDisabled: false
  </code></pre>
  
  <p>This is how the value is set:</p>
  
  <pre><code>set val(v: number){
    this._val = v;
    console.log("Marked for check with value "+this._val);
    //this.cd.markForCheck();
    this.cd.detectChanges();
  }
  </code></pre>
  
  <p>markForCheck doesn't work either so I really don't know what to do except handle the DOM myself through ElementRef (already tried it and it works), but I don't really want to do this =)</p>
  
  <p>I have been trying to detect the problem and I guess the generated factory class compares the previous value of buttonClasses with the current and it works when it goes from <code>btn btn-outline-info btn-block</code> to <code>btn btn-outline-info btn-block disabled</code> but not the other way around.</p>
  
  <p>The picture shows what happens when I reset the value with the second button and when buttonClasses first time get's called after that.
  <a href="https://i.stack.imgur.com/zUVmE.png" rel="nofollow"><img src="https://i.stack.imgur.com/zUVmE.png" alt="Debugging after reset button click"></a></p>
  
  <p>self._expr_2 is the previous value and it's <code>btn btn-outline-info btn-block</code> but it should also have <code>disabled</code>. Current value does not have <code>disabled</code> class which is correct.</p>
  
  <p>Thanks in advance for the help. I really don't know what to do here...</p>