Files
upstream-mirror 3a013ccdfe
Some checks failed
autofix.ci / autofix (push) Failing after 4s
Release / Release (push) Has been skipped
GitHub Actions Security Analysis / Run zizmor (push) Failing after 2s
snapshot of https://github.com/TanStack/query.git (main, 2026-09-16; blobs > 131072B omitted)
2026-09-16 01:13:08 +05:00

89 lines
2.4 KiB
Markdown

---
id: injectMutationState
title: injectMutationState
---
```ts
function injectMutationState<TResult>(injectMutationStateFn, options?): Signal<TResult[]>;
```
Defined in: [packages/angular-query-experimental/src/inject-mutation-state.ts:106](https://github.com/TanStack/query/blob/main/packages/angular-query-experimental/src/inject-mutation-state.ts#L106)
Injects a signal that gives you access to all mutations in the `MutationCache`. You can pass `filters`
([MutationFilters](../interfaces/MutationFilters.md)) to narrow down your mutations, and `select` to transform the mutation state.
## Type Parameters
### TResult
`TResult` = [`MutationState`](../interfaces/MutationState.md)\<`unknown`, `Error`, `unknown`, `unknown`\>
## Parameters
### injectMutationStateFn
() => `MutationStateOptions`\<`TResult`\>
A function returning the `filters` to narrow down matched mutations, and an
optional `select` to transform the mutation state. Similar to `computed` from Angular, this function runs
in the reactive context, so signals read inside it re-narrow the matched mutations.
### options?
[`InjectMutationStateOptions`](../interfaces/InjectMutationStateOptions.md)
Additional configuration
## Returns
`Signal`\<`TResult`[]\>
A `Signal` with an Array of whatever `select` returns for each matching mutation.
## Examples
Get all variables of all running mutations:
```angular-ts
@Component({
selector: 'pending-posts',
template: `{{ pendingVariables().length }} posts saving...`,
})
export class PendingPosts {
readonly pendingVariables = injectMutationState(() => ({
filters: { status: 'pending' },
select: (mutation) => mutation.state.variables,
}))
}
```
Get all data for specific mutations via the `mutationKey`:
```angular-ts
const mutationKey = ['posts']
@Component({
selector: 'posts',
template: `
<button (click)="createPost()">
Create post ({{ savedPosts().length }} saved so far)
</button>
`,
})
export class Posts {
// Some mutation that we want to get the state for
readonly createPostMutation = injectMutation(() => ({
mutationKey,
mutationFn: createPosts,
}))
readonly savedPosts = injectMutationState(() => ({
// this mutation key needs to match the mutation key of the given mutation (see above)
filters: { mutationKey, status: 'success' },
select: (mutation) => mutation.state.data,
}))
createPost() {
this.createPostMutation.mutate(['New Post'])
}
}
```