You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Operating System: OSX 10.15, Windows 10 (does not matter)
Node Version: 10.15, 13.8
NPM Version: 6.13.7, 6.4.1
Webpack Version webpack 4.27
Browser: Chrome 79 | Firefox 73 (guess, it does not matter)
Language: TypeScript 3.1.2
Current behavior:
Several custom elements cannot inherit the same base class (please, do not close issue at this point, at least, read the "Desired behavior" section first).
When you open root, Home custom element is rendered:
Let's click open foo - it opens FooContainer that in turn contains FooItem:
Let's get back to home and then go to bar - it opens BarContainer that in turn contains BarItem:
Nothing rendered and no any errors in console:
Both BarItem and FooItem extends same generic SomeComponentBase<TModel>
But let's get back to foo again:
Note, bar's template rendered with foo's model.
Two possible workarounds:
do not use inheritance
explicitly decorate FooItem and BarItem with @customElement decorator
Desired behavior
As of #463 (and other issues) I guess, this one should not be closed without fix. The issue is not about the behavior itself, but about the fact, that there is no any errors in console or anything else, no information at all for developers - what happened or what to do.
Second, notice that we explicitly declared @CustomElement(). Any time you inherit a custom element, you must add the customElement decorator.
It doens't need to be a @customElement decorator though, any metadata-stamping decorator would do: @bindable, @useShadowDOM, @templateController etc...
@jods4@EisenbergEffect@fkleuver We can fix this behavior of inheritance, that is surprising users here and there with probably a simple change: get own metadata instead of first available metadata in the hierarchy. Though I'm not sure the potential breaking changes, but it seems to me anything that is not working would suddenly work. Not sure if it's a good idea. Thoughts?
Submitting a bug report
Current behavior:
Several custom elements cannot inherit the same base class (please, do not close issue at this point, at least, read the "Desired behavior" section first).
Repo that reproduces bug: https://github.com/partyzzzan/extend-err-app
Note, the 1st commit represent a bug (
git checkout bug
), the 2nd and the 3rd commits are possible workarounds.When you open root,
Home
custom element is rendered:Let's click open
foo
- it opensFooContainer
that in turn containsFooItem
:Let's get back to
home
and then go tobar
- it opensBarContainer
that in turn containsBarItem
:Nothing rendered and no any errors in console:
Both
BarItem
andFooItem
extends same genericSomeComponentBase<TModel>
But let's get back to foo again:
Note,
bar
's template rendered withfoo
's model.Two possible workarounds:
FooItem
andBarItem
with@customElement
decoratorDesired behavior
As of #463 (and other issues) I guess, this one should not be closed without fix. The issue is not about the behavior itself, but about the fact, that there is no any errors in console or anything else, no information at all for developers - what happened or what to do.
It would be nice to have something like:
Use decorators, not inheritance.
(c) #463 (comment)
The text was updated successfully, but these errors were encountered: