@Inject() and @Injectable
Qual a diferença entre @Inject() and @Injectable no angular2?
Marcio
Curtidas 0
Melhor post
William Finco
08/01/2018
Olá Márcio,
O decorador @Inject() é um mecanismo geralmente utilizado no construtor de uma classe que permite especificar que o parâmetro inserido deve ser injetado.
Exemplo:
O @Injectable() faz o Angular ter o conhecimento que uma classe pode ser usada com a injeção de dependência:
Quando lidamos com o TypeScript no Angular, geralmente com a Injeção de Dependência eu costumo suprimir o uso do @Inject e faço assim:
Lembrando que a SuaClasse deve estar com o decorador @Injectable(), caso contrário o engine do angular retornará uma excessão.
Abs
O decorador @Inject() é um mecanismo geralmente utilizado no construtor de uma classe que permite especificar que o parâmetro inserido deve ser injetado.
Exemplo:
import {Component, Inject} from '@angular/core';
import { SuaClasse } from '../components/suaclasse';
export class AppComponent{
constructor(@Inject(SuaClasse) private suaClasse ){ }
}
O @Injectable() faz o Angular ter o conhecimento que uma classe pode ser usada com a injeção de dependência:
import { Injectable } from '@angular/core';
@Injectable()
export class SuaClasse(){
}
Quando lidamos com o TypeScript no Angular, geralmente com a Injeção de Dependência eu costumo suprimir o uso do @Inject e faço assim:
import from '@angular/core';
import { SuaClasse } from '../components/suaclasse';
export class AppComponent{
constructor(SuaClasse suaclasse){
this.suaclasse = suaclasse;
}
}
Lembrando que a SuaClasse deve estar com o decorador @Injectable(), caso contrário o engine do angular retornará uma excessão.
Abs
GOSTEI 1
Mais Respostas
Kelvin Andrade
08/01/2018
Olá,
Muito boa a sua explicação João! Só não podemos esquecer de definir a minha classe em providers do meu módulo!
E podemos omitir o código "this.suaclasse = suaclasse", por exemplo:
Muito boa a sua explicação João! Só não podemos esquecer de definir a minha classe em providers do meu módulo!
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { SuaClasse } from '../components/suaclasse';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule
],
providers: [SuaClasse], //Providers são definidos aqui
bootstrap: [AppComponent]
})
export class AppModule { }
E podemos omitir o código "this.suaclasse = suaclasse", por exemplo:
import from '@angular/core';
import { SuaClasse } from '../components/suaclasse';
export class AppComponent{
constructor(SuaClasse suaclasse){ }
}
GOSTEI 0