--- id: mutationOptions title: mutationOptions --- # Function: mutationOptions() Allows to share and re-use mutation options in a type-safe way. **Example** ```ts export class QueriesService { private http = inject(HttpClient) private queryClient = inject(QueryClient) updatePost(id: number) { return mutationOptions({ mutationFn: (post: Post) => Promise.resolve(post), mutationKey: ["updatePost", id], onSuccess: (newPost) => { // ^? newPost: Post this.queryClient.setQueryData(["posts", id], newPost) }, }); } } class ComponentOrService { queries = inject(QueriesService) id = signal(0) mutation = injectMutation(() => this.queries.updatePost(this.id())) save() { this.mutation.mutate({ title: 'New Title' }) } } ``` ## Param The mutation options. ## Call Signature ```ts function mutationOptions(options): WithRequired, "mutationKey"> ``` Defined in: [mutation-options.ts:39](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/mutation-options.ts#L39) Allows to share and re-use mutation options in a type-safe way. **Example** ```ts export class QueriesService { private http = inject(HttpClient) private queryClient = inject(QueryClient) updatePost(id: number) { return mutationOptions({ mutationFn: (post: Post) => Promise.resolve(post), mutationKey: ["updatePost", id], onSuccess: (newPost) => { // ^? newPost: Post this.queryClient.setQueryData(["posts", id], newPost) }, }); } } class ComponentOrService { queries = inject(QueriesService) id = signal(0) mutation = injectMutation(() => this.queries.updatePost(this.id())) save() { this.mutation.mutate({ title: 'New Title' }) } } ``` ### Type Parameters • **TData** = `unknown` • **TError** = `Error` • **TVariables** = `void` • **TOnMutateResult** = `unknown` ### Parameters #### options `WithRequired`\<[`CreateMutationOptions`](../../interfaces/createmutationoptions.md)\<`TData`, `TError`, `TVariables`, `TOnMutateResult`\>, `"mutationKey"`\> The mutation options. ### Returns `WithRequired`\<[`CreateMutationOptions`](../../interfaces/createmutationoptions.md)\<`TData`, `TError`, `TVariables`, `TOnMutateResult`\>, `"mutationKey"`\> Mutation options. Mutation options. ### Param The mutation options. ## Call Signature ```ts function mutationOptions(options): Omit, "mutationKey"> ``` Defined in: [mutation-options.ts:53](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/mutation-options.ts#L53) Allows to share and re-use mutation options in a type-safe way. **Example** ```ts export class QueriesService { private http = inject(HttpClient) private queryClient = inject(QueryClient) updatePost(id: number) { return mutationOptions({ mutationFn: (post: Post) => Promise.resolve(post), mutationKey: ["updatePost", id], onSuccess: (newPost) => { // ^? newPost: Post this.queryClient.setQueryData(["posts", id], newPost) }, }); } } class ComponentOrService { queries = inject(QueriesService) id = signal(0) mutation = injectMutation(() => this.queries.updatePost(this.id())) save() { this.mutation.mutate({ title: 'New Title' }) } } ``` ### Type Parameters • **TData** = `unknown` • **TError** = `Error` • **TVariables** = `void` • **TOnMutateResult** = `unknown` ### Parameters #### options `Omit`\<[`CreateMutationOptions`](../../interfaces/createmutationoptions.md)\<`TData`, `TError`, `TVariables`, `TOnMutateResult`\>, `"mutationKey"`\> The mutation options. ### Returns `Omit`\<[`CreateMutationOptions`](../../interfaces/createmutationoptions.md)\<`TData`, `TError`, `TVariables`, `TOnMutateResult`\>, `"mutationKey"`\> Mutation options. Mutation options. ### Param The mutation options.