Calling something angular-related outside it is quite a bad practice (it might also affect the digest/apply loop and not work as intended). Maybe there's an alternative: 
If you are inside a controller you can save your service inside a scope variable and then use ng-click to call a function inside your service.
var Controller=function($scope, YourService) {
    $scope.myService=YourService;
};
Controller.$inject=['$scope', 'YourService'];
app.controller('Controller', Controller);
And then, in the HTML:
<a ng-click="myService.method('open-modal').params({id:1})">Open modal</a>
if you still need to use angular-related methods outside it then you should be able to call the "scope()" function this way:
<a on-click="angular.element('#idOfTagWithNgController').scope().myService.method('open-modal').params({id:1})">Open modal</a>
You still need to assign your service to a scope variable to be able to access it this way. idOfTagWithNgController is of course the ID of the HTML tag with the ng-controller attribute (if it has no id you can add it). Mind that this is still bad practice and should be avoided