Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[angular-query] Accessing `.data` kicks off the `CreateQueryOptions` function

Aperta
#7,488 10 commenti 1 reazione 1 assegnatario Vedi su GitHub

@arnoud-dv ci sta già lavorando.

Dal 30/5/2024.

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

package: angular-query package: angular-query-experimental
Describe the bug

I have a very simple use case when I do not have an error handler or loading indicator, so I am trying to create a query and save a reference to only the .data signal. I am not invoking the signal immediately, but saving a reference to only the signal.
ie: something = injectQuery(() => { ... }).data;

I am using a signal input as a part of my query key.

I wanted to make that signal input required, but in doing so, Angular started throwing a runtime error saying that the required input had no value. From the outside, I was always passing a value in for the input.

After I reverted the input back to not required, I noticed that the CreateQueryOptions function I was using for the signal was actually being invoked immdeiately upon construction of the component as well as after the input value was set.

I was able to narrow it down and realize that this only happens when I have .data on the end in order to store off the signal. I was only doing this for the sake of simplicity. Nothing else in my code needs a reference to the query itself. They only need access to the data signal, so that's what I stored off. I was not expecting that to immediately invoke the options, and thus access the signal input before it is initialized.

I can confirm that if I store the reference to the entire query (ie: without .data), then it works correctly (and I can add .required if I want to). It confuses me because either way, my template will access the signal "immediately" via either query.data() or data(). But I suppose that is actually when rendering, vs at construct time when I store off .data.

Is this just bad practice the way I am trying to do it, or would this actually be considered a bug?

Your minimal, reproducible example

https://stackblitz.com/edit/angular-query-input-order?file=src%2Fapp%2Fsimple-example.component.ts&preset=node

Steps to reproduce
  • Open the repro
  • Look in the TanStack devtools and see that the "broken" example query ran twice. Once with null, and once the correct result:
    image
  • Now, change someInput to be required (see commented out line where the input is defined)
  • You will get a runtime error in the console like so:
    image
Expected behavior

I would expect that I can store off a reference to the .data signal whenever I want without it accessing signal inputs too soon.

How often does this bug happen?

Every time

Screenshots or Videos

No response

Platform
  • OS: MacOS 14.5
  • Browser: Edge
  • Version: 125.0.2535.67
Tanstack Query adapter

angular-query

TanStack Query version

5.40.0

TypeScript version

5.3.3

Additional context

No response

Lingua principale
TypeScript
Stelle
50.3k
Fork
4.2k
Merge medio
22h 33m
PR unite (30g)
214

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di TanStack/query

Tutte le issue di TanStack/query

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.