fix(core): only apply WrappedValue
to the binding of the pipe (#15257)
Previously, a pipe that returned a `WrappedValue` would force the change of the next bound property, independent of the binding in which the pipe was used. Now only the binding in which the `WrappedValue` is used will be assumed as changed. Fixes #15116 PR Close #15257
This commit is contained in:

committed by
Miško Hevery

parent
49829b4a4d
commit
0c43535ccc
@ -6,7 +6,7 @@
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {ChangeDetectorRef, SimpleChange, SimpleChanges} from '../change_detection/change_detection';
|
||||
import {ChangeDetectorRef, SimpleChange, SimpleChanges, WrappedValue} from '../change_detection/change_detection';
|
||||
import {Injector} from '../di';
|
||||
import {ElementRef} from '../linker/element_ref';
|
||||
import {TemplateRef} from '../linker/template_ref';
|
||||
@ -450,7 +450,10 @@ function updateProp(
|
||||
providerData.instance[propName] = value;
|
||||
if (def.flags & NodeFlags.OnChanges) {
|
||||
changes = changes || {};
|
||||
const oldValue = view.oldValues[def.bindingIndex + bindingIdx];
|
||||
let oldValue = view.oldValues[def.bindingIndex + bindingIdx];
|
||||
if (oldValue instanceof WrappedValue) {
|
||||
oldValue = oldValue.wrapped;
|
||||
}
|
||||
const binding = def.bindings[bindingIdx];
|
||||
changes[binding.nonMinifiedName] =
|
||||
new SimpleChange(oldValue, value, (view.state & ViewState.FirstCheck) !== 0);
|
||||
|
Reference in New Issue
Block a user