Skip to content

Custom elements with common base class #681

@lorond

Description

@lorond

Submitting a bug report

  • Library Version: aurelia-bootstrapper 2.3.2, aurelia-cli 1.2.3
  • 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).

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:
image

Let's click open foo - it opens FooContainer that in turn contains FooItem:
image

Let's get back to home and then go to bar - it opens BarContainer that in turn contains BarItem:
image

Nothing rendered and no any errors in console:
image

Both BarItem and FooItem extends same generic SomeComponentBase<TModel>

But let's get back to foo again:
image

Note, bar's template rendered with foo's model.

Two possible workarounds:

  1. do not use inheritance
  2. 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.

It would be nice to have something like:

Use decorators, not inheritance.

(c) #463 (comment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions