Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Problema com o @Injectable

Estou tendo problema com a sintaxe do Injectable Quando coloco : @Injectable({providedIn: 'root'}) no código, o Visual Studio Code fica indicando um erro dizendo que eram esperados 0 argumentos.... Estou esquecendo algo?

4 respostas

Boa noite. Cole pra nós o código completo deste arquivo?

import { Mecanica } from './../../modelos/mecanicas';
import { HttpClient } from "@angular/common/http";
import { Injectable } from '@angular/core';


const API = 'http://localhost:8080/api/carros/listaTodos';

@Injectable ({providedIn: 'root'})

export class ServicoService{

    constructor(private http: HttpClient){}

    listMecanica(mecanica) {
        return this.http.get<Mecanica[]>(API);
    }
}

Estou desenvolvendo em Ionic 3 um app que é montado em cima do angular , e estou recebendo o erro por causa da requisição da web API nessa parte, apesar de ter importado o modulo HTTPMODULE estou recebendo a mensagem dizendo que não há provider para o método ''ServicoService" e o visual studio não aceita a forma que o @Injectable foi escrita acima

solução!

Ah, agora ficou mais claro. É uma aplicação feita em Ionic 3 e não projeto do curso. Muito bem, a versão do Ionic que você esta usando não suporta treeshakable providers e por isso não aceita a instrução providedIn. Nesse caso, sugiro da uma olhada no curso de Ionic 3 da Alura. Lá ele mostra como carregar os providers diretamente nos módulos (sem providedIn).

Em suma, seu problema é de compatibilidade da versão do Angular usando pelo seu Ionic 3. Por isso que ele diz que Injetable recebe 0 argumentos, por que versões mais antigas do Angular o Injetable não recebe parâmetro algum.

O Angular do curso é o mais novo atualmente, Angular 6. Top do Top do Top. O Ionic sempre fica um pouco para trás na versão do Angular. E se você tentar atualizar o Angular do seu Ionic corre o risco de quebrar o projeto inteiro.