injectQuery() 的 Angular Tanstack 查询显式类型

问题描述 投票:0回答:1

我正在尝试在 Angular 中使用 Tan 堆栈查询,而我的 VS Code 一直在抱怨我必须明确提及注入查询结果的类型为 CreateQueryResult;其中文档中的示例均未使用任何显式类型。 例如在文档中:

class ServiceOrComponent {
  filter = signal('')

  todosQuery = injectQuery(() => ({
    queryKey: ['todos', this.filter()],
    queryFn: () => fetchTodos(this.filter()),
    // Signals can be combined with expressions
    enabled: !!this.filter(),
  }))
}

我所拥有的由于某种原因似乎不正确。我的问题是我是否必须拥有每个injectQuery 的类型?作为 CreateQueryResult

class ServiceOrComponent {
  filter = signal('')

  todosQuery: CreateQueryResult<Data, Error>; = injectQuery(() => ({
    queryKey: ['todos', this.filter()],
    queryFn: () => fetchTodos(this.filter()),
    // Signals can be combined with expressions
    enabled: !!this.filter(),
  }))
}
angular tanstackreact-query angular-query-signals
1个回答
0
投票

很简单,你只是忘记将其转换为promise,你需要用lastValueFrom包装func调用以使其成为promise,因为它的promise不是Observable

class ServiceOrComponent {
  filter = signal('')

  todosQuery = injectQuery(() => ({
    queryKey: ['todos', this.filter()],
    queryFn: () => lastValueFrom(fetchTodos(this.filter())),
    // Signals can be combined with expressions
    enabled: !!this.filter(),
  }))
}
© www.soinside.com 2019 - 2024. All rights reserved.