Как получить доступ к объекту, который использовал Decorator? - PullRequest
0 голосов
/ 24 октября 2018

Я хочу добавить некоторые элементы HTML, которые требуются от многих компонентов, с помощью декоратора.Это использование, которое я хочу реализовать:

const serializedCSS = '...';    // Serialized CSS

@injectStyle(serializedCSS);
class MyComponent extends HTMLElement {
   ...

Я хочу отправить сериализованный CSS декоратору, однако я не могу найти, как получить доступ к классу "MyComponent", мне нужно получить доступ к его собственному свойству, чтобысоздайте новый элемент стиля и добавьте его как дочерний.

function injectStyle(target: any) {
    console.log(target);

    // ??? HOW TO ACCESS THE OBJECT? ///

    function f(...args:any) {

    }

    return f;
}

Я не могу найти какое-либо решение по этому поводу.Любой совет это очень ценит!

1 Ответ

0 голосов
/ 25 октября 2018

Вот мое решение.

export function injectStyle(css:string, ...args:any) {
    return function(target:any) {
        // Now I can access target object with "target"!
        target.doSomething ... 
        ...
    };
}

Теперь я могу использовать декоратор injectStyle примерно так:

@injectStyle(require('./style.css'))
class App extends HTMLElement {
    ...
}
...