diff --git a/src/component.ts b/src/component.ts index 39d6b526..f13d7f72 100644 --- a/src/component.ts +++ b/src/component.ts @@ -321,6 +321,10 @@ export class Component< return shouldUpdate ? this._updateProps(nextProps) : Promise.resolve(); } + set(target: any, key: string | number, value: any) { + this.__owl__.observer!.set(target, key, value); + } + //-------------------------------------------------------------------------- // Private //-------------------------------------------------------------------------- diff --git a/tests/component.test.ts b/tests/component.test.ts index 837a4db8..17af6946 100644 --- a/tests/component.test.ts +++ b/tests/component.test.ts @@ -1449,4 +1449,19 @@ describe("widget and observable state", () => { ); } }); + + test("widget can add observed keys to its state", async () => { + class TestWidget extends Widget { + state: any = { a: 1 }; + inlineTemplate = `