Как-то так. Angular:
(function () { angular .module('app.widgets') .directive('iconButton', iconButton); function iconButton() { return { restrict: 'E', templateUrl: 'app/widgets/buttons/icon-button.html', scope: { click: '&', icon: '@' }, replace: true }; } })(); <button class="bo-icon-button fa fa-{{icon}}" ng-click="click()"/>
React+Typescript:
export function iconButton(icon: string, onClick: () => void) { return dom.div({ className: $"bo-icon-button fa fa-{icon}", onClick }); } Особенно мне нравится часть про "click: '&', icon: '@'". Ангуляр дизайнили какие-то шизофреники - плотность ебанутых eDSL, замаскированных хаков и неочевидного на квадратный сантиметр зашкаливает.