title: $onChanges not triggered
body: <h3>Get updated by model but don't update the model. Should I use the $onChanges function</h3>
  <p>I have a <strong>model</strong>:</p>
  <pre><code>class Model {
    constructor(data) {
      this.data = data;
    }
    getData() {
      return this;
    }
  }
  </code></pre>
  <p>2 nested components:</p>
  <pre><code>var parentComponent = {
    bindings: {
      vm: '&lt;'
    },
    controller: function() {
      var ctrl = this;
    },
    template: `
      &lt;div&gt;
        &lt;a ui-sref=&quot;hello.about&quot; ui-sref-active=&quot;active&quot;&gt;sub-view&lt;/a&gt;
        Parent component&lt;input ng-model=&quot;$ctrl.vm.data&quot;&gt;
        &lt;ui-view&gt;&lt;/ui-view&gt;
      &lt;/div&gt;
    `
  };
  </code></pre>
  <pre class="lang-js prettyprint-override"><code>var childComponent = {
    bindings: {
      vm: '&lt;'
    },
    template: `
      &lt;div&gt;
        Child component &lt;input ng-model=&quot;$ctrl.vm.data&quot;&gt;
        &lt;br/&gt;
        Child component copy&lt;input ng-model=&quot;$ctrl.vmCopy.data&quot;&gt;
        &lt;br/&gt;
        Child component doCheck&lt;input ng-model=&quot;$ctrl.vmCheck.data&quot;&gt;
        &lt;/div&gt;
    `,
    controller: function() {
      var ctrl = this;
      ctrl.$onChanges = function(changes) {
        ctrl.vmCopy = angular.copy(ctrl.vm);
        ctrl.vm = ctrl.vm;
      };
      ctrl.$doCheck = function () {
        var oldVm;
        if (!angular.equals(oldVm, ctrl.vm)) {
          oldVm = angular.copy(ctrl.vm);
          ctrl.vmCheck = oldVm;
          console.log(ctrl)
        }
      }
    }
  }
  </code></pre>
  <p>Both get data from resolve:</p>
  <pre><code>.config(function($stateProvider) {
      var helloState = {
        name: 'hello',
        url: '/hello',
        resolve: {
          vm: [function() {
            return myModel.getData();
          }]
        },
        component: 'parent'
      }
  
      var aboutState = {
        name: 'hello.about',
        url: '/about',
        resolve: {
          vm: [function() {
            return myModel.getData();
          }]
        },
        component: 'child'
      }
      $stateProvider.state(helloState);
      $stateProvider.state(aboutState);
  
    })
  </code></pre>
  <p>I would like my components to be updated when model change or when parent change, but I don't wan't them to update the model.</p>
  <p>I thought that was why one way binding '&lt;' stands for.</p>
  <p>Here's a <a href="https://jsfiddle.net/yvbenitah/1h07t30z/1153/" rel="nofollow noreferrer">fiddle</a> to illustrate what I want to do.</p>
  <p>In other word:
  I would like the child component to be updated on parent changes but don't want the child to update the parent.</p>
  <p>You can see in the fiddle that if I bind directly to local scope, child get update from parent but also update the parent</p>
  <p>If I copy the binding to local scope, child isn't updating the parent but also doesn't get updated by parent.
  If</p>