From 4cecc97bcae7b5955b9a7589aa98df1c7e531391 Mon Sep 17 00:00:00 2001 From: Martijn Welker Date: Wed, 1 May 2019 11:03:57 +0200 Subject: [PATCH] fix(ViewParent), fix(Input), fix(Output): Copy possibly inherited metadata instead of using object references in addBindingToMetadata and addRequireToMetadata Fixes #96 --- src/input.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/input.ts b/src/input.ts index 96d790f..dcc470f 100644 --- a/src/input.ts +++ b/src/input.ts @@ -15,7 +15,8 @@ export function ViewParent(controller: string) { /** @internal */ function addBindingToMetadata(target: any, key: string, direction: string, alias?: string) { const targetConstructor = target.constructor; - const bindings = getMetadata(metadataKeys.bindings, targetConstructor) || {}; + const definedMetadata = getMetadata(metadataKeys.bindings, targetConstructor); + const bindings = definedMetadata !== undefined ? {...definedMetadata} : {}; bindings[key] = alias || direction; defineMetadata(metadataKeys.bindings, bindings, targetConstructor); } @@ -23,7 +24,8 @@ function addBindingToMetadata(target: any, key: string, direction: string, alias /** @internal */ function addRequireToMetadata(target: any, key: string, controller: string) { const targetConstructor = target.constructor; - const require = getMetadata(metadataKeys.require, targetConstructor) || {}; + const definedMetadata = getMetadata(metadataKeys.require, targetConstructor); + const require = definedMetadata !== undefined ? {...definedMetadata} : {}; require[key] = controller; defineMetadata(metadataKeys.require, require, targetConstructor); }