I think it's because `onchange` is already a default method on HTMLElement.   Try not defining onchange() and see if your declarative example still works.