From c4b6c45891dfac7a4ab09f6e9b1bd1656434b064 Mon Sep 17 00:00:00 2001 From: Ward Bell Date: Mon, 9 May 2016 15:45:04 -0700 Subject: [PATCH] feat(core/linker): add SimpleChanges type to lifecycle_hooks to simplify OnChanges signature --- .../src/common/forms/directives/ng_control_name.ts | 4 ++-- .../src/common/forms/directives/ng_form_control.ts | 4 ++-- .../src/common/forms/directives/ng_form_model.ts | 4 ++-- .../angular2/src/common/forms/directives/ng_model.ts | 4 ++-- modules/angular2/src/core/linker.ts | 5 +++-- modules/angular2/src/core/linker/interfaces.ts | 10 ++++++++-- modules/angular2/src/upgrade/downgrade_ng2_adapter.ts | 4 ++-- modules/angular2/src/upgrade/upgrade_ng1_adapter.ts | 3 ++- .../angular2/test/compiler/runtime_metadata_spec.ts | 4 ++-- 9 files changed, 25 insertions(+), 17 deletions(-) diff --git a/modules/angular2/src/common/forms/directives/ng_control_name.ts b/modules/angular2/src/common/forms/directives/ng_control_name.ts index e54c847a0a7e4..4c8f892695308 100644 --- a/modules/angular2/src/common/forms/directives/ng_control_name.ts +++ b/modules/angular2/src/common/forms/directives/ng_control_name.ts @@ -4,7 +4,7 @@ import {EventEmitter, ObservableWrapper} from 'angular2/src/facade/async'; import { OnChanges, OnDestroy, - SimpleChange, + SimpleChanges, Query, Directive, forwardRef, @@ -114,7 +114,7 @@ export class NgControlName extends NgControl implements OnChanges, this.valueAccessor = selectValueAccessor(this, valueAccessors); } - ngOnChanges(changes: {[key: string]: SimpleChange}) { + ngOnChanges(changes: SimpleChanges) { if (!this._added) { this.formDirective.addControl(this); this._added = true; diff --git a/modules/angular2/src/common/forms/directives/ng_form_control.ts b/modules/angular2/src/common/forms/directives/ng_form_control.ts index d68ea5fe8c147..62d70e90dbd99 100644 --- a/modules/angular2/src/common/forms/directives/ng_form_control.ts +++ b/modules/angular2/src/common/forms/directives/ng_form_control.ts @@ -3,7 +3,7 @@ import {StringMapWrapper} from 'angular2/src/facade/collection'; import {EventEmitter, ObservableWrapper} from 'angular2/src/facade/async'; import { OnChanges, - SimpleChange, + SimpleChanges, Query, Directive, forwardRef, @@ -97,7 +97,7 @@ export class NgFormControl extends NgControl implements OnChanges { this.valueAccessor = selectValueAccessor(this, valueAccessors); } - ngOnChanges(changes: {[key: string]: SimpleChange}): void { + ngOnChanges(changes: SimpleChanges): void { if (this._isControlChanged(changes)) { setUpControl(this.form, this); this.form.updateValueAndValidity({emitEvent: false}); diff --git a/modules/angular2/src/common/forms/directives/ng_form_model.ts b/modules/angular2/src/common/forms/directives/ng_form_model.ts index 26ae1dff6c7ac..aed4877020694 100644 --- a/modules/angular2/src/common/forms/directives/ng_form_model.ts +++ b/modules/angular2/src/common/forms/directives/ng_form_model.ts @@ -2,7 +2,7 @@ import {CONST_EXPR} from 'angular2/src/facade/lang'; import {ListWrapper, StringMapWrapper} from 'angular2/src/facade/collection'; import {ObservableWrapper, EventEmitter} from 'angular2/src/facade/async'; import { - SimpleChange, + SimpleChanges, OnChanges, Directive, forwardRef, @@ -113,7 +113,7 @@ export class NgFormModel extends ControlContainer implements Form, super(); } - ngOnChanges(changes: {[key: string]: SimpleChange}): void { + ngOnChanges(changes: SimpleChanges): void { if (StringMapWrapper.contains(changes, "form")) { var sync = composeValidators(this._validators); this.form.validator = Validators.compose([this.form.validator, sync]); diff --git a/modules/angular2/src/common/forms/directives/ng_model.ts b/modules/angular2/src/common/forms/directives/ng_model.ts index c353174883f3a..78c6f81eb3b64 100644 --- a/modules/angular2/src/common/forms/directives/ng_model.ts +++ b/modules/angular2/src/common/forms/directives/ng_model.ts @@ -2,7 +2,7 @@ import {CONST_EXPR} from 'angular2/src/facade/lang'; import {EventEmitter, ObservableWrapper} from 'angular2/src/facade/async'; import { OnChanges, - SimpleChange, + SimpleChanges, Query, Directive, forwardRef, @@ -71,7 +71,7 @@ export class NgModel extends NgControl implements OnChanges { this.valueAccessor = selectValueAccessor(this, valueAccessors); } - ngOnChanges(changes: {[key: string]: SimpleChange}) { + ngOnChanges(changes: SimpleChanges) { if (!this._added) { setUpControl(this._control, this); this._control.updateValueAndValidity({emitEvent: false}); diff --git a/modules/angular2/src/core/linker.ts b/modules/angular2/src/core/linker.ts index b43b69776f650..df3ac525312b0 100644 --- a/modules/angular2/src/core/linker.ts +++ b/modules/angular2/src/core/linker.ts @@ -7,7 +7,8 @@ export { OnChanges, OnDestroy, OnInit, - DoCheck + DoCheck, + SimpleChanges } from './linker/interfaces'; export {DirectiveResolver} from './linker/directive_resolver'; export {ViewResolver} from './linker/view_resolver'; @@ -19,4 +20,4 @@ export {ElementRef} from './linker/element_ref'; export {TemplateRef} from './linker/template_ref'; export {ViewRef, HostViewRef, ProtoViewRef} from './linker/view_ref'; export {ViewContainerRef} from './linker/view_container_ref'; -export {ComponentRef} from './linker/dynamic_component_loader'; \ No newline at end of file +export {ComponentRef} from './linker/dynamic_component_loader'; diff --git a/modules/angular2/src/core/linker/interfaces.ts b/modules/angular2/src/core/linker/interfaces.ts index f3733aee600c8..edcf87538ddde 100644 --- a/modules/angular2/src/core/linker/interfaces.ts +++ b/modules/angular2/src/core/linker/interfaces.ts @@ -12,6 +12,12 @@ export enum LifecycleHooks { AfterViewChecked } +/** + * A `changes` object whose keys are property names and + * values are instances of {@link SimpleChange}. See {@link OnChanges} + */ +export interface SimpleChanges {[propName: string]: SimpleChange}; + /** * @internal */ @@ -57,7 +63,7 @@ export var LIFECYCLE_HOOKS_VALUES = [ * class MyComponent implements OnChanges { * @Input() myProp: any; * - * ngOnChanges(changes: {[propName: string]: SimpleChange}) { + * ngOnChanges(changes: SimpleChanges) { * console.log('ngOnChanges - myProp = ' + changes['myProp'].currentValue); * } * } @@ -76,7 +82,7 @@ export var LIFECYCLE_HOOKS_VALUES = [ * bootstrap(App).catch(err => console.error(err)); * ``` */ -export interface OnChanges { ngOnChanges(changes: {[key: string]: SimpleChange}); } +export interface OnChanges { ngOnChanges(changes: SimpleChanges); } /** * Implement this interface to execute custom initialization logic after your directive's diff --git a/modules/angular2/src/upgrade/downgrade_ng2_adapter.ts b/modules/angular2/src/upgrade/downgrade_ng2_adapter.ts index b1172a2e080e2..389c3d46713e6 100644 --- a/modules/angular2/src/upgrade/downgrade_ng2_adapter.ts +++ b/modules/angular2/src/upgrade/downgrade_ng2_adapter.ts @@ -6,7 +6,7 @@ import { Injector, OnChanges, ProtoViewRef, - SimpleChange + SimpleChanges } from 'angular2/core'; import {NG1_SCOPE} from './constants'; import {ComponentInfo} from './metadata'; @@ -20,7 +20,7 @@ const INITIAL_VALUE = { export class DowngradeNg2ComponentAdapter { component: any = null; inputChangeCount: number = 0; - inputChanges: {[key: string]: SimpleChange} = null; + inputChanges: SimpleChanges = null; hostViewRef: HostViewRef = null; changeDetector: ChangeDetectorRef = null; componentScope: angular.IScope; diff --git a/modules/angular2/src/upgrade/upgrade_ng1_adapter.ts b/modules/angular2/src/upgrade/upgrade_ng1_adapter.ts index d6a7136ba3780..f6abd05d6f7d7 100644 --- a/modules/angular2/src/upgrade/upgrade_ng1_adapter.ts +++ b/modules/angular2/src/upgrade/upgrade_ng1_adapter.ts @@ -6,6 +6,7 @@ import { Inject, OnChanges, SimpleChange, + SimpleChanges, Type } from 'angular2/core'; import { @@ -224,7 +225,7 @@ class UpgradeNg1ComponentAdapter implements OnChanges, DoCheck { } } - ngOnChanges(changes: {[name: string]: SimpleChange}) { + ngOnChanges(changes: SimpleChanges) { for (var name in changes) { if ((changes).hasOwnProperty(name)) { var change: SimpleChange = changes[name]; diff --git a/modules/angular2/test/compiler/runtime_metadata_spec.ts b/modules/angular2/test/compiler/runtime_metadata_spec.ts index 46fd18e4097ca..3391787b5a891 100644 --- a/modules/angular2/test/compiler/runtime_metadata_spec.ts +++ b/modules/angular2/test/compiler/runtime_metadata_spec.ts @@ -30,7 +30,7 @@ import { AfterContentChecked, AfterViewInit, AfterViewChecked, - SimpleChange, + SimpleChanges, provide } from 'angular2/core'; @@ -136,7 +136,7 @@ class DirectiveWithoutModuleId { class ComponentWithEverything implements OnChanges, OnInit, DoCheck, OnDestroy, AfterContentInit, AfterContentChecked, AfterViewInit, AfterViewChecked { - ngOnChanges(changes: {[key: string]: SimpleChange}): void {} + ngOnChanges(changes: SimpleChanges): void {} ngOnInit(): void {} ngDoCheck(): void {} ngOnDestroy(): void {}