1
resposta

ErroNG0203

Boa tarde,

Venho por meio desse fórum ajuda pra verificar um erro que estou tendo em relação a uma página que estou fazendo; Uma página está com "error: NG0203: inject() must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used with runInInjectionContext." Insira aqui a descrição dessa imagem para ajudar na acessibilidade como ná imagem abaixo

Meu auth.service.ts:

import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Account } from '../account.model';


@Injectable({
  providedIn: 'root'
})
export class AuthService {

  constructor(private http: HttpClient){}
  apiURL= 'http://localhost:3000/contas/signup';

  logAccount(){
      return this.http.get(this.apiURL);
  }

  registerAccount(account: Account){
      return this.http.post(this.apiURL, account);
  }


}

E o component responsavel pela pagina de cadastro:

import { Component, OnInit } from '@angular/core';
import { FormControl, FormGroup, Validators } from '@angular/forms';
import { ToastrService } from 'ngx-toastr';

import { Account } from '../../services/account.model';


import { Router } from '@angular/router';
import { AuthService } from 'src/app/services/services/auth.service';

@Component({
  selector: 'app-new-account',
  templateUrl: './new-account.component.html',
  styleUrls: ['./new-account.component.css']
})
export class NewAccountComponent implements OnInit{


  public registerForm: FormGroup = new FormGroup({
    'fullName': new FormControl('', Validators.minLength(5)),
    'email': new FormControl('', Validators.email),
    'CPF': new FormControl('', Validators.maxLength(11)),
    'date': new FormControl('', Validators.required),
    'password': new FormControl('', Validators.maxLength(6)),
  })

  constructor( private auth: AuthService, 
               private toastr: ToastrService, 
               private router: Router){}


  ngOnInit() {

  }

  public registerAccount(): void{
    let newAccount: Account = new Account(
      this.registerForm.value.fullName,
      this.registerForm.value.email,
      this.registerForm.value.CPF,
      this.registerForm.value.date,
      this.registerForm.value.password,
    )

    this.auth.registerAccount(newAccount);{
      if(this.registerForm.valid){
        this.auth.registerAccount(this.registerForm.value).subscribe(res=>{
           this.toastr.success('Cadastrado com sucesso');
           this.router.navigate(['login']);
        });
      }else{
        this.toastr.warning('Por favor insira os dados corretos')
      }
    }
  }
}

Estou batendo a cabeça um cota e já não seu o que fazer, agradeço a atenção adiantada;

1 resposta

Olá Lucas, tudo bem com você?

Peço desculpas pela demora em obter um retorno.

O erro error: NG0203: inject() must be called from an injection context such as a constructor geralmente ocorre quando o método inject() é chamado fora de um contexto apropriado para injeção de dependência. Porém, apenas com o código fornecido, não foi possível identificar inconsistências. Mas, deixo algumas observações para que você possa conferir e fazer correções:

  • Verifique se o método inject() está sendo chamado de um construtor, uma função de fábrica, um inicializador de campo ou uma função usada com runInInjectionContext. Certifique-se de que o método inject() seja chamado em um local apropriado dentro da classe/componente.

  • Verifique se todas as dependências necessárias estão corretamente declaradas e injetadas no construtor da classe/componente. Certifique-se de que todas as dependências necessárias estejam disponíveis antes de chamar o método inject().

  • Verifique se você está usando a versão correta do Angular e se todas as dependências estão atualizadas (ng update), pois esse erro pode ocorrer devido a incompatibilidades entre diferentes versões do Angular ou de bibliotecas relacionadas.

Caso queira se aprofundar no assunto de injeção de dependências no angular, recomendo a leitura abaixo:

Vale ressaltar que como não tenho acesso ao cenário completo e código completo do projeto, outros testes terão de ser feitos a fim de obter o resultado esperado, mas espero que esta resposta seja um bom ponto de partida para a resolução do seu objetivo.

Espero ter ajudado.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!