Previously, the emitEvent flag was only checked when emitting on the current control. Thus, if the control was part of a hierarchy, events were emitted on the parent and the childrens. This fixes the issue by properly passing the emitEvent flag to both parent and childrens. Fixes #12366 PR Close #21018
This commit is contained in:
@ -1053,6 +1053,28 @@ import {of } from 'rxjs/observable/of';
|
||||
expect(logger).toEqual(['control', 'array', 'form']);
|
||||
});
|
||||
|
||||
it('should not emit value change events when emitEvent = false', () => {
|
||||
c.valueChanges.subscribe(() => logger.push('control'));
|
||||
a.valueChanges.subscribe(() => logger.push('array'));
|
||||
form.valueChanges.subscribe(() => logger.push('form'));
|
||||
|
||||
a.disable({emitEvent: false});
|
||||
expect(logger).toEqual([]);
|
||||
a.enable({emitEvent: false});
|
||||
expect(logger).toEqual([]);
|
||||
});
|
||||
|
||||
it('should not emit status change events when emitEvent = false', () => {
|
||||
c.statusChanges.subscribe(() => logger.push('control'));
|
||||
a.statusChanges.subscribe(() => logger.push('array'));
|
||||
form.statusChanges.subscribe(() => logger.push('form'));
|
||||
|
||||
a.disable({emitEvent: false});
|
||||
expect(logger).toEqual([]);
|
||||
a.enable({emitEvent: false});
|
||||
expect(logger).toEqual([]);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
describe('setControl()', () => {
|
||||
|
@ -1139,6 +1139,26 @@ import {FormArray} from '@angular/forms/src/model';
|
||||
expect(fn).toThrowError(`Expected validator to return Promise or Observable.`);
|
||||
});
|
||||
|
||||
it('should not emit value change events when emitEvent = false', () => {
|
||||
c.valueChanges.subscribe(() => logger.push('control'));
|
||||
g.valueChanges.subscribe(() => logger.push('group'));
|
||||
|
||||
c.disable({emitEvent: false});
|
||||
expect(logger).toEqual([]);
|
||||
c.enable({emitEvent: false});
|
||||
expect(logger).toEqual([]);
|
||||
});
|
||||
|
||||
it('should not emit status change events when emitEvent = false', () => {
|
||||
c.statusChanges.subscribe(() => logger.push('control'));
|
||||
g.statusChanges.subscribe(() => logger.push('form'));
|
||||
|
||||
c.disable({emitEvent: false});
|
||||
expect(logger).toEqual([]);
|
||||
c.enable({emitEvent: false});
|
||||
expect(logger).toEqual([]);
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -1045,6 +1045,28 @@ import {of } from 'rxjs/observable/of';
|
||||
expect(logger).toEqual(['control', 'group', 'form']);
|
||||
});
|
||||
|
||||
it('should not emit value change events when emitEvent = false', () => {
|
||||
c.valueChanges.subscribe(() => logger.push('control'));
|
||||
g.valueChanges.subscribe(() => logger.push('group'));
|
||||
form.valueChanges.subscribe(() => logger.push('form'));
|
||||
|
||||
g.disable({emitEvent: false});
|
||||
expect(logger).toEqual([]);
|
||||
g.enable({emitEvent: false});
|
||||
expect(logger).toEqual([]);
|
||||
});
|
||||
|
||||
it('should not emit status change events when emitEvent = false', () => {
|
||||
c.statusChanges.subscribe(() => logger.push('control'));
|
||||
g.statusChanges.subscribe(() => logger.push('group'));
|
||||
form.statusChanges.subscribe(() => logger.push('form'));
|
||||
|
||||
g.disable({emitEvent: false});
|
||||
expect(logger).toEqual([]);
|
||||
g.enable({emitEvent: false});
|
||||
expect(logger).toEqual([]);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
Reference in New Issue
Block a user