Estou testando o armazenamento de sinais Ngrx. Assisti a alguns tutoriais e li a documentação oficial. Os vídeos no YouTube são bem simples e os documentos não cobrem isso. Estou tentando usar withHooks
onInit
o método para buscar dados no store init, mas o problema é que o endpoint da API que estou usando requer param, mas passar params para o método não é coberto, ou pelo menos não consegui encontrar a solução. Devo abandonar a busca signalStore
onInit
e mudar para o componente padrão ngOnInit
? Além disso, esse prop é passado para o componente sobre signal input
. Código de exemplo abaixo.
export const PostsStore = signalStore(
withState<PostsStateInterface>({
post: {},
error: null,
isLoading: false
}),
withMethods((store, postsService = inject(PostsService)) => ({
loadPosts: rxMethod<number>(
pipe(
switchMap((id) => {
return postsService.getPost(id).pipe(
tap((posts) => {
patchState(store, { post })
})
)
})
)
)
})),
withHooks({
onInit(store) {
store.loadPost(id) // Call the loadPost method with the id, how to get the id?
},
})
)
@Component({
...
standalone: true,
providers: [PostsStore],
imports: [
...
],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class ImageProcessing360ContainerComponent {
id = input.required<number>()
store = inject(PostsStore)
}
O que você está procurando está coberto em
Então, o que você precisa fazer de acordo com a documentação não é carregar os dados nos stores,
withHooks-> onInit -> loadPosts
mas sim no componente nongOnInit -> store.loadPosts(id)
.