Error: [ng:cpws] in formController with deep watching - angularJS 1.8.0

Error: [ng:cpws] in formController with deep watching - angularJS 1.8.0

我有一个带有子控件(输入和文本区域)的 formController 的简单场景。当我使用深度观察者(objectEquality 等于 true)来检查整个表单的变化时,我得到 Error: [ng:cpws]

这是基本代码(使用最新的angularJS):

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Example - example-forms-simple-production</title>
  <script src="//code.angularjs.org/snapshot/angular.min.js"></script>
</head>

<body ng-app="formExample">
  <div ng-controller="ExampleController">
  <form novalidate class="simple-form" name="formContent">
    <label>Name: <input type="text" ng-model="user.name" /></label><br />
    <label>Description: <textarea ng_model="user.description"></textarea></label><br />
  </form>
  <pre>user = {{user | json}}</pre>
</div>

<script>
  angular.module('formExample', [])
    .controller('ExampleController', ['$scope', function($scope) {
      $scope.master = {};

      $scope.$watch(() => $scope.formContent, (newValue, oldValue) => {
        console.log('new ', newValue);
        console.log('old ', oldValue);
      }, true);

    }]);
</script>
</body>
</html>


控制台中的问题是:

angular.js:15697 Error: [ng:cpws] http://errors.angularjs.org/1.8.2-build.2468+sha.9b3b6f7f7/ng/cpws
    at VM469 angular.min.js:7
    at e (VM469 angular.min.js:13)
    at c (VM469 angular.min.js:13)
    at e (VM469 angular.min.js:13)
    at c (VM469 angular.min.js:12)
    at e (VM469 angular.min.js:13)
    at c (VM469 angular.min.js:13)
    at e (VM469 angular.min.js:13)
    at Ia (VM469 angular.min.js:15)
    at m.$digest (VM469 angular.min.js:153)

我不完全明白表单对象中的哪个属性导致了这个问题。根据 angularJS 文档,这可能是由于循环和自引用引起的

plunker 中的实时代码:https://plnkr.co/edit/B9n7GAPkZvzsFbKN?preview

这里解释这个问题的原因:Unintended breaking change when passing ngModel as a binding 基本上,(自 9e24e77 起)我们将范围放在 NgModelController 实例上,因此不再可能复制此类实例(这在 $watching 时发生在幕后)。