--- 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) 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< CreateMutationOptions, 'mutationKey' > ``` Defined in: [mutation-options.ts:38](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/mutation-options.ts#L38) Allows to share and re-use mutation options in a type-safe way. **Example** ```ts export class QueriesService { private http = inject(HttpClient) 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< CreateMutationOptions, 'mutationKey' > ``` Defined in: [mutation-options.ts:52](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/mutation-options.ts#L52) Allows to share and re-use mutation options in a type-safe way. **Example** ```ts export class QueriesService { private http = inject(HttpClient) 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.