Enquanto a maioria de vocês provavelmente familiarizado com a forma básica para configurar um provedor de simplesmente declarar a eles:

providers: 

Angular de injeção de dependência oferece recursos mais avançados.

com o fornecedor de fábrica você pode configurar o Injector para devolver um valor invocando uma função específica. Vejamos este exemplo.

providers: };

A propriedade configura o token que será usado na injeção de dependência e useFactory está a apontar para a função que será usada para retornar o valor desejado. A propriedade deps configura os tokens que serão passados à sua função de fábrica.quando usá-lo?

Fornecedor de fábrica pode ser muito útil quando você precisa criar um valor dependente dinamicamente, com base na informação que você não terá até o tempo de execução. Você pode tomar uma decisão informada sobre o valor a retornar com base em outros serviços e estado de Aplicação.exemplo:

vamos tentar adivinhar de que dispositivo móvel um usuário está logado. Vamos tentar usar informações como o Usuário-agente do navegador, largura do ecrã e altura do ecrã. Vamos definir três token que serão usados mais tarde para identificar o nome do dispositivo.

o InjectionToken classe — cria um token que pode ser usado na injeção de dependência Angular. InjectionToken é parametrizado no T qual é o tipo de objeto que será retornado por Injector. Isto proporciona um nível adicional de segurança do tipo.

providers: providers: providers: 

Now we can come up with an algorithm to detect the device name based on the three tokens we defined above. Passamos uma função de seta para o useFactory que tem 3 dependências, a fim de resolver essas dependências, passamos em uma matriz de dependências (dep) com os tokens listados.

providers: 

finalmente, consumiremos o nome do dispositivo no nosso componente Angular.

@Component({ selector: 'my-device-name')
export class DeviceName {
constructor(@Inject('DeviceName') private deviceName: string) {}}

o decorador de Parâmetros de injecção indica ao Angular DI que este parâmetro (deviceName) deve ser resolvido a partir de um token — DeviceName definido.só isso!Siga-me no Twitter # LanoTechno

Deixe uma resposta

O seu endereço de email não será publicado.