Closed eassymo closed 5 years ago
Upgrading from 1.0.1 to 2.0.2 throws next error:
TypeError: Class constructor DefaultValueAccessor cannot be invoked without 'new'
What exact version of Angular are you using? Can you provide a plunker?
I'm thinking this DefaultValueAccessor was never meant to be extended. These host bindings only work on the subclass, i.e. they don't inherit, this is why you have bug #11. Because your (blur) handler overrides (in actuality it could never run as "only the subclasses host bindings will run") the parent classes (blur) host binding that points to OnTouched(). As I look at this, and try to hack a solution, the only thing that comes to mind is to just copy DefaultValueAccessor and hack that, i.e. don't inherit anything. It has implementation that it figures is important, but that's in private methods inaccessible from a subclass, so you can't just subclass it, steal its host bindings and override a couple methods (writeValue, _handleInput) to get what you want. I'm gonna try to write this from scratch using the DefaultValueAccessor as a template to start from. Probably the only way.
ok, seems like this is working. I have to wrap it in tests, but I figure this is the way to go (copy and hack DefaultValueAccessor). I also added :not(input:[matAutoComplete], the only material accessor I know that it had been clashing with: you can only have one accessor per form control. In reality, no trim needed for autocomplete, so no big deal there. my accessor
hello there, this looks like a common issue among all libraries that extend DefaultValueAccessor. I opened a question here, so we can merge our forces to deal with this problem:
please feel free to contribute
Having the same error message after updating my tsconfig.json
(angular 6.10) from:
"compilerOptions": {
"target": "es5",
to:
"compilerOptions": {
"target": "es6",
With this change, I can reliably turn the bug on and off.
I guess that there is a side-effect of the transpilation that uncovers the bug.
For now, I have reverted to es5 - I was just checking out generator support.
My guess is that adding a constructor that calls the super constructor will fix the issue.
Thanks for your detailed report. Please feel free to open a PR for the fix and I will be happy to merge it.
Getting:
TypeError: Cannot read property 'setProperty' of undefined
when upgrading from Angular 4 to 5
using version 1.0.1