Хорошо.Еще раз, решая свои собственные проблемы, надеясь помочь кому-нибудь с подобной проблемой;)
Прежде всего: Мой подход был не лучшим.Я бы не рекомендовал помещать ваши пользовательские элементы в папку активов.Обычно вы получаете свои пользовательские элементы, устанавливая модуль npm, поэтому я переместил компоненты в структуру проекта.Таким образом, я мог бы также избавиться от дополнительных узлов node_modules, и импорт стал намного проще обрабатывать.
Как использовать пользовательские компоненты Lit Element в Angular:
- Install lit-elemnt в вашем проекте:
npm install --save lit-element
- Создайте папку в вашей папке
src/app
для всех пользовательских компонентов (например, custom-components
) - Создайте свой компонент (JS или TS, я выбралTS)
import { LitElement, html } from 'lit-element';
// Extend the LitElement base class
// export the class, so it can be imported where it is needed
export class Ti8mTestComponent extends LitElement {
/**
* Implement `render` to define a template for your element.
*
* You must provide an implementation of `render` for any element
* that uses LitElement as a base class.
*/
render() {
/**
* `render` must return a lit-html `TemplateResult`.
*
* To create a `TemplateResult`, tag a JavaScript template literal
* with the `html` helper function:
*/
console.log('test-component', this);
return html`
<h1>Test works!</h1>
<p>For real though!</p>
`;
}
}
Обратите внимание, как я пропустил часть customElements.define('ti8m-test', Ti8mTestComponent)
.Мы вернемся к этому через секунду.
Вы можете определить свои пользовательские элементы, где вы хотите в вашем коде.Я предлагаю либо main.ts
, NgModule, либо в конструкторе компонента, в котором вы хотите использовать элемент.
import {Ti8mTestComponent} from './app/custom-elements/ti8m/test';
...
customElements.define('ti8m-test', Ti8mTestComponent);
Вот и все!Ваш элемент Lit должен быть виден в вашем приложении сейчас!: -)
Примечания:
- Мне пришлось обновить до Angular 7, так как это первая версия, использующая Typescript> 3, которая необходима дляМодуль Lit Element npm.(Lit Element использует тип
unknown
в своем коде, который был представлен в Typescript 3) - Также мне пришлось изменить
target
в tsconfig.json
на es2015
.(иначе вы столкнетесь с class constructors must be invoked with |new|
ошибками консоли)
Веселитесь!Надеюсь, это поможет.