Я сделал собственный компонент, который в основном обертывает линейную диаграмму d3. Теперь я хочу иметь возможность зарегистрировать обратный вызов для кликов по линиям на графике.
Я дал компоненту параметр @NgCallback
, которому я затем отправляю события:
class NetworkSummaryComponent implements NgShadowRootAware {
@NgCallback('callback')
Function callback;
void onShadowRoot(ShadowRoot shadowRoot) {
...
chart.callMethod('listen', ['line-click', (ev) {
var name = ev.callMethod('getLineName');
print(name);
callback({'name': name});
}]);
}
}
При использовании компонента я указываю функцию моего контроллера в качестве обратного вызова:
<network-summary
...
callback="ctrl.lineClicked">
</network-summary>
Однако на самом деле эта функция никогда не вызывается, я знаю, что обратный вызов поступает со стороны JS, потому что выполняется печать в первом фрагменте.
Если вместо этого я укажу атрибут как callback="ctrl.lineClicked()"
, я получу странное исключение:
Closure call with mismatched arguments: function 'call'
Я не смог найти никакой официальной документации о том, как правильно делать обратные вызовы, поэтому я не совсем уверен, что я делаю неправильно. Есть идеи?