🧩 Exercícios: Injeção de Dependências e Função inject()
🧩 Exercícios Práticos: Injeção de Dependências e Função inject()
Spec Frontend Com Angular • Trilha Progressiva em 4 Níveis
🧭 Navegação Pedagógica
-
📖 Teoria do Capítulo 💻 Exemplos 📊 Slides 🧠 Quiz
🎯 Nível 1: Fundamentos
Problema 09.1 — Serviço Injetável com @Injectable({ providedIn: ‘root’ })
Contexto: Serviço Injetável com @Injectable({ providedIn: ‘root’ }) no contexto de Injeção de Dependências e Função inject().
Requisitos de Execução:
- Declarar
ProdutoServicecomo singleton corporativo acessível em toda a aplicação.
Resultado Esperado
Serviço singleton injetado com injeção automática no root injector.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_09_1_SeuNome - Envie na tarefa:
Atividade Cap 09 - Injeção de Dependências e Função inject()
🔑 Gabarito de Código & Solução Comentada
// produto.service.ts
import { Injectable } from '@angular/core';
@Injectable({ providedIn: 'root' })
export class ProdutoService {
obterProdutos() {
return [{ id: 1, nome: 'Mouse' }, { id: 2, nome: 'Teclado' }];
}
}
🔍 Nível 2: Prática
Problema 09.2 — Injeção Moderna com a Função inject() no Angular 18
Contexto: Injeção Moderna com a Função inject() no Angular 18 no contexto de Injeção de Dependências e Função inject().
Requisitos de Execução:
- Substituir construtores longos pela função moderna
private service = inject(ProdutoService).
Resultado Esperado
Dependências resolvidas via função inject() de forma elegante.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_09_2_SeuNome - Envie na tarefa:
Atividade Cap 09 - Injeção de Dependências e Função inject()
🔑 Gabarito de Código & Solução Comentada
// lista-inject.component.ts
import { Component, inject } from '@angular/core';
import { ProdutoService } from './produto.service';
@Component({
selector: 'app-lista-inject',
standalone: true,
template: `<div>Total: {{ produtos.length }}</div>`
})
export class ListaInjectComponent {
private produtoService = inject(ProdutoService);
produtos = this.produtoService.obterProdutos();
}
⚡ Nível 3: Integração
Problema 09.3 — Hierarquia de Injetores (Component-level providers)
Contexto: Hierarquia de Injetores (Component-level providers) no contexto de Injeção de Dependências e Função inject().
Requisitos de Execução:
- Fornecer nova instância do serviço em nível de componente com
providers: [LocalLogService].
Resultado Esperado
Instância isolada de serviço criada para o escopo exclusivo do componente.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_09_3_SeuNome - Envie na tarefa:
Atividade Cap 09 - Injeção de Dependências e Função inject()
🔑 Gabarito de Código & Solução Comentada
// local-provider.component.ts
import { Component, inject } from '@angular/core';
class LocalService { id = Math.random(); }
@Component({
selector: 'app-local-demo',
standalone: true,
providers: [LocalService],
template: `<p>ID da Instância Local: {{ local.id }}</p>`
})
export class LocalDemoComponent {
local = inject(LocalService);
}
🏆 Nível 4: Desafio Corporativo
Problema 09.4 — Injection Tokens Customizados para Configurações Tipadas
Contexto: Injection Tokens Customizados para Configurações Tipadas no contexto de Injeção de Dependências e Função inject().
Requisitos de Execução:
- Criar
InjectionToken<AppConfig>('APP_CONFIG')e injetar configurações em tempo de execução.
Resultado Esperado
Configurações da aplicação injetadas com tipagem estrita via InjectionToken.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_09_4_SeuNome - Envie na tarefa:
Atividade Cap 09 - Injeção de Dependências e Função inject()
🔑 Gabarito de Código & Solução Comentada
// app-config.token.ts
import { InjectionToken, inject } from '@angular/core';
export interface AppConfig { apiUrl: string; retryAttempts: number; }
export const APP_CONFIG = new InjectionToken<AppConfig>('APP_CONFIG');
export function useApiUrl() {
const config = inject(APP_CONFIG);
return config.apiUrl;
}
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |