---
Added: v2.0.0
Status: Active
Last reviewed: 2018-03-29
---
# Document Actions service
Implements the document menu actions for the [Document List component](../content-services/document-list.component.md).
## Class members
### Methods
- **canExecuteAction**(obj: `any`): `boolean`
Checks if actions can be executed for an item.
- _obj:_ `any` - Item to receive an action
- **Returns** `boolean` - True if the action can be executed on this item, false otherwise
- **getHandler**(key: `string`): `ContentActionHandler`
Gets the handler for an action.
- _key:_ `string` - Identifier of the action
- **Returns** `ContentActionHandler` - The handler for the action
- **setHandler**(key: `string`, handler: `ContentActionHandler`): `boolean`
Sets a new handler for an action.
- _key:_ `string` - Identifier of the action
- _handler:_ `ContentActionHandler` - Handler for the action
- **Returns** `boolean` - False if the key was an empty/null string, true otherwise
## Details
This service implements the built-in actions that can be applied to a document
shown in a [Document List component](document-list.component.md): **delete**,
**download**, **copy** and **move** (see the
[Content Action component](content-action.component.md) for further details and examples
of these menu items). However, you can also use the service to add extra actions or
replace the built-in ones with your own implementation.
### Registering an action
In the example below, a custom handler called `my-handler` is registered with the service.
This action will invoke the `myDocumentActionHandler` function each time it is selected
from the Document List menu.
```ts
import { DocumentActionsService } from '@alfresco/adf-content-services';
export class MyView {
constructor(documentActions: DocumentActionsService) {
documentActions.setHandler(
'my-handler',
this.myDocumentActionHandler.bind(this)
);
}
myDocumentActionHandler(obj: any) {
window.alert('my custom action handler');
}
}
```
The action can then be used from the component in the usual way:
```html
```
You can also override a built-in handler (eg, 'download') with your own function:
```ts
export class MyView {
constructor(documentActions: DocumentActionsService) {
documentActions.setHandler(
'download',
this.customDownloadBehavior.bind(this)
);
}
customDownloadBehavior(obj: any) {
window.alert('my custom download behavior');
}
}
```
You will probably want to set up all your custom actions at the application root level or
with a custom application service.
## See also
- [Content action component](content-action.component.md)
- [Folder actions service](folder-actions.service.md)