diff --git a/src/component/directive.ts b/src/component/directive.ts index 3712dc0b..23c349ea 100644 --- a/src/component/directive.ts +++ b/src/component/directive.ts @@ -336,7 +336,7 @@ QWeb.addDirective({ } if (hasDynamicProps) { const dynamicProp = ctx.formatExpression(node.getAttribute("t-props")!); - ctx.addLine(`let props${componentID} = Object.assign({${propStr}}, ${dynamicProp});`); + ctx.addLine(`let props${componentID} = Object.assign({}, ${dynamicProp}, {${propStr}});`); } else { ctx.addLine(`let props${componentID} = {${propStr}};`); } diff --git a/tests/component/__snapshots__/component.test.ts.snap b/tests/component/__snapshots__/component.test.ts.snap index 17760c9e..267d4f16 100644 --- a/tests/component/__snapshots__/component.test.ts.snap +++ b/tests/component/__snapshots__/component.test.ts.snap @@ -467,7 +467,7 @@ exports[`dynamic t-props basic use 1`] = ` let vn1 = h('div', p1, c1); // Component 'Child' let w2 = '__3__' in parent.__owl__.cmap ? parent.__owl__.children[parent.__owl__.cmap['__3__']] : false; - let props2 = Object.assign({}, scope['some'].obj); + let props2 = Object.assign({}, scope['some'].obj, {}); if (w2 && w2.__owl__.currentFiber && !w2.__owl__.vnode) { w2.destroy(); w2 = false; diff --git a/tests/component/component.test.ts b/tests/component/component.test.ts index 1610541e..bc5a34f4 100644 --- a/tests/component/component.test.ts +++ b/tests/component/component.test.ts @@ -4040,6 +4040,30 @@ describe("dynamic t-props", () => { expect(fixture.innerHTML).toBe("