У меня есть собственный веб-компонент с функцией обратного вызова 'myCallback'.
<script>
class MyComponent extends HTMLElement {
constructor() {
super();
this.myCallback = this.getAttribute("my-callback");
}
connectedCallback() {
this.innerHTML = "MyComponent";
const me = this;
setTimeout(function () {
const cb = me.myCallback;
if (typeof cb === "string") {
new Function(cb).call(window);
} else if (typeof cb === "function") {
cb.call(window);
} else {
console.log("not a function: " + cb);
}
}, 1000);
}
}
customElements.define("my-component", MyComponent);
</script>
Я хочу использовать этот веб-компонент в Angular и назначить ему обратный вызов, но, похоже, он не работает.Это то, что я пробовал до сих пор:
<my-component my-callback="angularCallback()"></my-component>
<my-component my-callback="{{angularCallback}}"></my-component>
<my-component [my-callback]="angularCallback"></my-component>
<my-component [my-callback]="angularCallback()"></my-component>
<my-component (my-callback)="angularCallback()"></my-component>
В первой строке выше выдается ошибка «angularCallback не является функцией», потому что она не определена в окне, но в Angular.Другие строки никогда не вызываются и не выдают никакой ошибки.
В качестве простого теста я попробовал следующее, и он отлично работает:
<my-component my-callback="console.log('test-callback');"></my-component>
Есть ли способ назначить обратный вызов вУгловой через шаблон?
Обновление с решением
Ошибка, которую я сделал, заключалась в том, что я попытался [my-callback]
вместо [myCallback]
ТакРешение заключается в следующем:
<my-component [myCallback]="angularCallback"></my-component>