这会导致无限循环:( 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
为什么会这样?这是一个错误吗?
答案 0 :(得分:2)
这似乎是ngModel的一个错误。请参阅Github上的问题:docs。
编辑:我对此问题的解决方法是使用装饰器,如果新值和旧值的深度比较相等,则导致foo()
返回旧值。 (angular/angular#11097)