Let's say i have CtrlOne
that extends CtrlTwo
, and a componentOne
that instantiated in CtrlOne
template. Some code (i'm skipping most of the irrelevant code just so the problem will be clearer):
class CtrlOne extends CtrlTwo {
constructor() { super(); }
}
class CtrlTwo {
sayMyName(name: string) {
console.log(this.getMyLastName() + name);
}
getMyLastName() {
return 'squarepants';
}
}
This is the template associated with CtrlOne
:
<component-one data-say-my-name="vm.sayMyName"></component-one>
And this is stateless componentOne
:
angular.module('mymodule').component('componentOne', {
bindings: {
sayMyName: '&'
},
template: '<button data-ng-click="$ctrl.sayMyName()('spongebob')></button>'
});
On click, i successfully get to the function sayMyName
of CtrlTwo
, but it's refusing to recognize this.getMyLastName
, throwing TypeError: this.getMyLastName is not a function
.
If i just use sayMyName
or getMyLastName
directly from CtrlOne
template, everything works fine. But if i use it trough the binding passed to componentOne
, i get the error.
What am i missing here?