Skip to content

Commit c25997a

Browse files
authored
Merge pull request tomalaforge#554 from kabrunko-dev/docs/translate-challenge-5
docs(pt): translate challenge 5
2 parents d59bf25 + 457d32a commit c25997a

File tree

1 file changed

+50
-0
lines changed
  • docs/src/content/docs/pt/challenges/angular

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
---
2+
title: 🟢 Aplicação Crud
3+
description: Desafio 5 é sobre refatorar uma aplicação crud is about refactoring a crud application
4+
author: thomas-laforge
5+
challengeNumber: 5
6+
command: angular-crud
7+
sidebar:
8+
order: 2
9+
---
10+
11+
## Informação
12+
13+
Comunicar e ter um estado global/local em sincronia com seu backend é o coração de qualquer aplicação. Você necessitará dominar as seguintes melhores práticas para construir aplicações Angular fortes e confiáveis.
14+
15+
## Declaração
16+
17+
Neste exercício, você tem uma pequena aplicação CRUD, que tem uma lista de TODOS, atualiza e exclui alguns todos.
18+
19+
Atualmente temos um exemplo funcional, mas cheio de más práticas.
20+
21+
### Passo 1: refatorar com melhores práticas
22+
23+
O que você precisará:
24+
25+
- Evite **any** como um tipo. Use Interface para aproveitar o sistema de tipos do Typescript para evitar erros
26+
- Use um **serviço separado** para todas suas chamadas http e use um **Signal** para sua lista de todos
27+
- Não **mute** em seus dados
28+
29+
```typescript
30+
// Evite isto
31+
this.todos[todoUpdated.id - 1] = todoUpdated;
32+
33+
// Prefira algo assim, mas precisa melhorar, porque queremos manter a mesma ordem.
34+
this.todos = [...this.todos.filter((t) => t.id !== todoUpdated.id), todoUpdated];
35+
```
36+
37+
### Passo 2: Melhore
38+
39+
- Adicione um botão **Deletar**: _<a href="https://jsonplaceholder.typicode.com/" target="_blank">Documentação de API falsa</a>_
40+
- Lide com **erros** corretamente. _(Globalmente)_
41+
- Adicione um indicador de **carregamento** global. _Você pode usar MatProgressSpinnerModule_
42+
43+
### Passo 3: Manutenibilidade!! adicione alguns testes
44+
45+
- Adicione 2/3 testes
46+
47+
### Step 4: Incrível!!! domine seu estado.
48+
49+
- Use o **componente store do ngrx**, **ngrx/store**, **rxAngular**, **tanstack-query** ou **ngrx/signal-store** como estado local de seu componente.
50+
- Tenha um indicador de carregamento/erro **localizado**, e.g. apenas no Todo sendo processado e **desabilite** todos os botões do Todo processado. _(Dica: você precisará criar um ItemComponent)_

0 commit comments

Comments
 (0)