为什么ngModel在传递新对象时会导致无限循环,而当输入不是?

时间:2017-06-15 14:52:00

标签: angular

这会导致无限循环:( plunker - 如果你运行它,整个页面都会冻结)

<child [ngModel]="foo()" ngDefaultControl></child>
...
foo() {return new Object();}
...
//child implements ControlValueAccessor

并且不会:( plunker

<child [anythingElse]="foo()" ngDefaultControl></child>
...
foo() {return new Object();}
...
@Input() anythingElse; //on child

为什么会这样?这是一个错误吗?

1 个答案:

答案 0 :(得分:2)

这似乎是ngModel的一个错误。请参阅Github上的问题:docs

编辑:我对此问题的解决方法是使用装饰器,如果新值和旧值的深度比较相等,则导致foo()返回旧值。 (angular/angular#11097