@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