我正在尝试在 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(),
}))
}
很简单,你只是忘记将其转换为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(),
}))
}