diff --git a/modules/@angular/compiler/src/expression_parser/ast.ts b/modules/@angular/compiler/src/expression_parser/ast.ts index 8c5724ca11..87accce967 100644 --- a/modules/@angular/compiler/src/expression_parser/ast.ts +++ b/modules/@angular/compiler/src/expression_parser/ast.ts @@ -320,7 +320,7 @@ export class AstTransformer implements AstVisitor { } visitPropertyWrite(ast: PropertyWrite, context: any): AST { - return new PropertyWrite(ast.span, ast.receiver.visit(this), ast.name, ast.value); + return new PropertyWrite(ast.span, ast.receiver.visit(this), ast.name, ast.value.visit(this)); } visitSafePropertyRead(ast: SafePropertyRead, context: any): AST { diff --git a/modules/@angular/core/test/linker/change_detection_integration_spec.ts b/modules/@angular/core/test/linker/change_detection_integration_spec.ts index a4a2ffdefe..d092065fcd 100644 --- a/modules/@angular/core/test/linker/change_detection_integration_spec.ts +++ b/modules/@angular/core/test/linker/change_detection_integration_spec.ts @@ -619,6 +619,14 @@ export function main() { expect(ctx.componentInstance.a).toEqual(2); })); + it('should support empty literals', fakeAsync(() => { + const ctx = _bindSimpleProp('(event)="a=[{},[]]"'); + const childEl = ctx.debugElement.children[0]; + childEl.triggerEventHandler('event', 'EVENT'); + + expect(ctx.componentInstance.a).toEqual([{}, []]); + })); + it('should throw when trying to assign to a local', fakeAsync(() => { expect(() => { _bindSimpleProp('(event)="$event=1"');