Как избавиться от прослушивателя кликов документа при уничтожении углового компонента?Как отменить регистрацию кликов в угловом компоненте?
упрощенный демонстрационный код:
<div ng-app="app">
<div ng-controller="TestingCtrl as vm">
<my-component ng-if="vm.showComponent"></my-component>
<br><br><br>
<button ng-click="vm.setShowState(false)">
Destroy component
</button>
</div>
</div>
Javascipt:
angular.module('app', [])
.controller('TestingCtrl', function TestingCtrl() {
this.showComponent = true;
this.setShowState = function(state) {
this.showComponent = state;
}
})
.component('myComponent', {
bindings: {
name: '@'
},
template: 'myComponent',
controller: function ($document) {
var listener;
this.$onInit = function() {
listener = $document.on('click', function() {
console.log('You clicked on the document');
});
}
this.$onDestroy = function() {
console.log('$onDestory triggered');
$document.off('click', listener);
}
}
});
При нажатии на кнопку "Уничтожить компонент", компонент получает удаляется из DOM (с нг-если) и $ onDestroy запускается. Я хочу, чтобы $ onDestroy отменил событие click, но ничего не происходит.