Providers Nedir?

Angular’da @Injectable() dekoratörüyle işaretlenen servisler, provider olarak adlandırılır. Provider’lar, bağımlılıkların yönetimi için kullanılan mekanizmalardır. Angular’ın Dependency Injection (DI) sistemi, provider’ların uygulama içindeki yerlerini kontrol etmek ve servislerin ilgili componentlere sağlanmasını sağlamak için provider’ları kullanır.

Angular, provider’ları oluşturmak için üç farklı yöntem sağlar:

  1. Component-level Provider: Bir component’in sadece kendisi için kullandığı bir servis için kullanılır. Bu servis, component’in providers dizisinde tanımlanır.

  2. Module-level Provider: Birden fazla component’in kullanımına açık olan bir servis için kullanılır. Bu servis, ilgili module’un providers dizisinde tanımlanır.

  3. Application-level Provider: Tüm uygulama boyunca kullanılan bir servis için kullanılır. Bu servis, uygulamanın root module’unda tanımlanır.

Provider’lar, servislerin birden fazla component arasında paylaşılmasını sağlar. Böylece, bir component bir servisi kullanarak işlem yaparken, diğer componentler de aynı servisten yararlanabilirler.

Angular’ın Dependency Injection (DI) sistemi, servisleri enjekte etmek için kullanılır. Bu sistem, uygulama boyunca kullanılan servisleri oluşturur ve componentler arasında doğru şekilde dağıtır. Provider’lar, servislerin DI sistemi tarafından tanınmasına yardımcı olur ve uygulamanın tamamında bir servisin tek bir örneğinin kullanılmasını sağlar.

Özetle, Angular’da provider’lar, servislerin oluşturulması, dağıtılması ve paylaşılması için kullanılan mekanizmalardır ve uygulamanın modülerliği ve ölçeklenebilirliği için oldukça önemlidir.

				
					import { Injectable } from '@angular/core';

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

  myMethod() {
    // Servis metodunun gövdesi
  }
}

				
			

Yukarıdaki örnekte, @Injectable() dekoratörü kullanılarak MyService adlı bir servis tanımlanmıştır. Bu servis, providedIn özelliği root olarak belirlenerek uygulamanın root injector’unda yer alır. Bu sayede servis, tüm uygulama boyunca kullanılabilir hale gelir.

Servisin gövdesinde myMethod() adlı bir metod tanımlanmıştır. Bu metod, servisin kullanım amacına göre farklı işlemler gerçekleştirebilir. Servis metodları, uygulamanın diğer bileşenleri tarafından çağrılabilir ve kullanılabilir.

Servisler, componentler gibi Angular CLI komutlarıyla oluşturulabilir. Örneğin, ng generate service MyService komutu kullanılarak yeni bir servis dosyası oluşturulabilir.

				
					import { Component } from '@angular/core';
import { MyService } from './my-service.service';

@Component({
  selector: 'app-my-component',
  template: `
    <h1>{{ greeting }}</h1>
  `
})
export class MyComponent {
  greeting: string;

  constructor(private myService: MyService) { }

  ngOnInit() {
    this.greeting = this.myService.myMethod();
  }
}
				
			

Yukarıdaki örnekte, MyService adlı bir servis MyComponent bileşeninde kullanılmıştır. Bileşenin constructor fonksiyonunda, MyService sınıfının bir örneği private myService olarak enjekte edilmiştir.

ngOnInit() metodu bileşenin hayat döngüsünde bir kez çağrılır ve bileşenin başlangıç değerlerinin ayarlandığı yerdir. Bu metodda, myMethod() fonksiyonu çağrılarak servisten bir değer alınır ve greeting adlı bileşen değişkenine atanır.

Daha sonra, bileşenin template’inde greeting adlı bileşen değişkeni kullanılarak servisten alınan değer ekranda gösterilir.

Facebook
Twitter
LinkedIn
Pinterest

Leave a Reply

Your email address will not be published. Required fields are marked *