diff --git a/packages/compiler/src/template/pipeline/ir/src/expression.ts b/packages/compiler/src/template/pipeline/ir/src/expression.ts index f50187ad1fe..6fe8d3d35ba 100644 --- a/packages/compiler/src/template/pipeline/ir/src/expression.ts +++ b/packages/compiler/src/template/pipeline/ir/src/expression.ts @@ -510,6 +510,13 @@ export function transformExpressionsInExpression( } else if (expr instanceof o.ReadKeyExpr) { expr.receiver = transformExpressionsInExpression(expr.receiver, transform, flags); expr.index = transformExpressionsInExpression(expr.index, transform, flags); + } else if (expr instanceof o.WritePropExpr) { + expr.receiver = transformExpressionsInExpression(expr.receiver, transform, flags); + expr.value = transformExpressionsInExpression(expr.value, transform, flags); + } else if (expr instanceof o.WriteKeyExpr) { + expr.receiver = transformExpressionsInExpression(expr.receiver, transform, flags); + expr.index = transformExpressionsInExpression(expr.index, transform, flags); + expr.value = transformExpressionsInExpression(expr.value, transform, flags); } else if (expr instanceof o.InvokeFunctionExpr) { expr.fn = transformExpressionsInExpression(expr.fn, transform, flags); for (let i = 0; i < expr.args.length; i++) { diff --git a/packages/compiler/src/template/pipeline/src/ingest.ts b/packages/compiler/src/template/pipeline/src/ingest.ts index 0d94b8dbffa..188a07914d3 100644 --- a/packages/compiler/src/template/pipeline/src/ingest.ts +++ b/packages/compiler/src/template/pipeline/src/ingest.ts @@ -125,6 +125,14 @@ function convertAst(ast: e.AST, cpl: ComponentCompilation): o.Expression { } else { return new o.ReadPropExpr(convertAst(ast.receiver, cpl), ast.name); } + } else if (ast instanceof e.PropertyWrite) { + return new o.WritePropExpr(convertAst(ast.receiver, cpl), ast.name, convertAst(ast.value, cpl)); + } else if (ast instanceof e.KeyedWrite) { + return new o.WriteKeyExpr( + convertAst(ast.receiver, cpl), + convertAst(ast.key, cpl), + convertAst(ast.value, cpl), + ); } else if (ast instanceof e.Call) { if (ast.receiver instanceof e.ImplicitReceiver) { throw new Error(`Unexpected ImplicitReceiver`);