SlideShare une entreprise Scribd logo
1  sur  32
1
1. Angular Nedir?
1. Kullanım Durumu
2. Versiyon Geçmişi
3. Geliştirme Ortamının Hazırlanması
(Kurulum)
2. Temel Kavramlar
1. Component (Bileşen)
2. View (Şablonlar)
3. Module
3. Modüller ve Bileşenler
1. Modül oluşturma
2. Component oluşturma
4. Veriler ve Olaylar (data & events)
1. Data binding
2. Event binding
5. Direktifler
1. Yerleşik Direktifler (ngIf, ngFor, vs.)
2. Özel Direktifler
6. Pipe’ler
7. Bileşenler arası iletişim
1. @Input
2. @Output
8. Servisler
1. Servis Oluşturma
2. Servis Kullanımı
(injection)
3. Servis Kapsamı (scope)
9. HTTP İşlemleri
1. HTTP Client nedir?
2. Request gönderme
3. Response alma
10. Lifecycle Hooks
1. Angular, açık kaynaklı bir MVC framework’üdür. Library değildir!
2. Javascript (JS) tabanlıdır. Fakat yazımı kolaylaştırmak için Typescript (TS) kullanır.
3. SPA (Single Page Aplication) uygulamalar geliştirmenizi sağlar.
4. Veriler üzerinde çalışmayı ve onları yönetmeyi daha da kolaylaştırır:
• Property-Binding & Event-Binding
5. Modüler bir yapısı vardır. Uygulamayı bileşenlere ayırmamızı sağlar.
• Modüller, yazdığımız kodları birbirinden bağımsız ve izole olacak şekilde
daha küçük alt parçalara ayırdığımız yapılardır
6. Gelişmiş Routing desteği vardır. Uygulama içinde gezinmeyi hızlandırır ve kolaylaştırır.
7. İleri seviyede Dependency Injection mekanizmasına sahiptir, bağımlılıkları kendisi yönetir.
8. Test yazma ve doğrulama yapma imkanı sağlar (jest, karma, …). Hata yönetimini kolaylaştırır.
Input Output
Bileşen
Angular 2+
https://update.angular.io
biz Angular
v15 üzerine
konuşacağı
z
Her şeyden önce NODE.JS kurulu olmalıdır -> https://nodejs.org
• NPM (Node Package Manager)
• Kurulum sonrası windows’ta restart gerektirebilir!
npm install -g @angular/cli@v15-lts
ng version
Bundan sonra IDE’mizde “YapilacaklarListem” klasörünü proje olarak açıp kod yazmaya başlayabiliriz
ng new YapilacaklarListem
cd YapilacaklarListem
ng serve
http://localhost:4200
2.1 Component (Bileşen)
Nedir?
• Bileşen; birbirinden bağımsız, yeniden kullanılabilir ve özelleştirilebilir küçük parçalardır.
• Her bir parçayı, birbirinden izole bir şekilde düşünerek kodlamaya başlamalıyız.
• Bileşenler birbirleriyle etkileşime girebilirler.
Angular’da her şey Component (Bileşen) olabilir. Bileşen bir button da olabilir, bir liste de, bir tablo dökümü de. Kısacası, anlam yükleyeceğiniz her şey bir bileşen olarak ele alınabilir.
Component
2.2 Component (Bileşen) Yapısı
• Uygulamanın yapı taşlarıdır
• Uygulamadan neredeyse tüm işlemler Component’ler üzerinden
yürür.
• MVC yapısında “Controller” görevi üstlenir diyebiliriz.
• selector özelliği, bir Component’in Html şablonu içerisinde
doğrudan kullanılabilmesini sağlar.
• Html içerisinde <app-root> şeklinde etiket (tag) gibi çağrılırlar.
• Html içerisinde birden fazla ve içiçe kullanılabilirler. (app-root hariç!!!)
• her bileşen, ait olduğu bir Modül içerisinde declare edilmelidir
• App-Root bileşeni de ana modül olan AppModule içerisindedir.
• Modüller, bileşenleri veya başka modülleri ihtiva eden yapılardır.
1. todo-root
2. todo-form
3. todo-item
4. todo-info
todo Modülü
Component(1)
(2)
(3)
(4)
app-
root
todo-
root
todo-
form
todo-
item
todo-
info
 “Todo” Uygulamasını Birlikte Oluşturalım.
 Modülü ve Bileşenleri Ekleyelim
 Biçimlendirme için «Bootstrap» kütüphanesi kullanalım
• todo-root
• todo-form
• todo-item
• todo-info
todo Modülü
Veri Bağlama (Tek
Yönlü)
• Verilerimizi Component sınıfı içerisinde bir “property” olarak tanımlarız.
• Tanımlanan veriyi Html şablonunda ekrana yazdırmak için {{ veri }} formatını kullanırız.
• Tanımlanan verileri, doğrudan bir HTML etikenin Attribute’üne de bağlayabiliriz:
<a [href]=veri> linke tıklayınız </a>
• Kullanıcı etkileşimi sonrasında tetiklenmiş olan bir olayı (click, mousehover, keypress,
vs..) ,
bir Component içerisindeki metod ile birbirine bağlar
• <etiket (event)="method()">
Olay (Event) Bağlama
Veri Bağlama
Tek Yönlü İki Yönlü
Veri Bağlama (İki
Yönlü)
Angular’da veri bağlama 2’ye ayrılır:
Veri Bağlama
Tek Yönlü (one-way) İki Yönlü (two-way)
Component Template
Component Template
Two-Way Data Binding nedir?
Bir form öğesi (örneğin input) ve bir Component değişkeni arasında çift yönlü veri akışını sağlar.
Böylece form öğesinin değeri değiştiğinde Component değişkeni güncellenir. Tersi durum da geçerlidir.
<input [(ngModel)]=“veri"> [] ile () birleşimine dikkat!
Bu örnekte “veri" değişkeni, Input elementinin değeri ile senkronize hale gelmiştir.
Not: ngModel kullanabilmeniz için FormsModule import edilmelidir!
Mevcuttaki HTML elementleri üzerinde değişiklikler (manipülasyon) yapmamızı sağlayan yapılardır. Bu
değişiklikler:
 Bir bölümü gizleme veya tekrar gösterme
 Bir bölümü, sayfada birden fazla kez tekrarlama (döngü)
 Bir bölüm üzerinde farklı biçimlendirmeler yapma (rengini değiştirme, boyunu büyütme vs.)
Angular’da 3 çeşit direktif vardır:
1. Attribute direktifleri
2. Yapısal (built-in) direktifler
3. Özel (custom) direktifler
• Şablon (view) içerisinde kullanılan yardımcı metotlardır.
• Direktifler şablondaki Html elementlerinde değişim yaparken, Pipe’lar da şablondaki veriler üzerinde değişim yaparlar.
• Pipe metotları, boru ( | ) sembolü yardımıyla bir veriye bağlanırlar.
• Veriyi belirli bir formata dönüştürmek veya işlemek amacıyla kullanılırlar.
{{ veri | buyukHarflereDonustur }}
• Pipe’lar zincirleme şeklinde kullanılabilirler, birbirlerine bağlanabilirler:
{{ tarih |
date:”dd.mm.yyyy” }}
• Angular tarafından hazır kullanıma sunulmuş Pipe’lar olduğu gibi
kendinize ait Pipe’lar da oluşturabilirsiniz
{{ veri | tersCevir | buyukHarflereDonustur
}}
Verilerin ve Olayların, bileşenler arasında paylaşılabilmesi anlamına gelir.
Bileşenler arası iletişim kurmaya neden ihtiyacımız var?
1. Örneğin, kullanıcının bir bileşende girdiği verilerin başka bir bileşende kullanılması gerekebilir.
2. Bir form bileşenindeki Kaydet butonuna tıklanmasıyla forma girilen bilgiler veritabanına kaydedilmek
istenebilir.
3. Bazı bileşenler, diğer bileşenlerin varlığına bağımlı olabilir. Örneğin bir liste bileşeni, seçilen bir liste
öğesin ayrıntılarını gösteren ayrı bir bileşenin varlığına ihtiyaç duyabilir. (ebys-imzalanmis-evraklar) -
(ebys-evrak-detay)
4. Her bir bileşen, tek bir sorumluluğa sahip olmalıdır (SOLID). Fakat bazı durumlarda bir bileşenin tek
başına sorumluluklarını yerine getirmesi mümkün olmayabilir. Bu durumda diğer bileşenlerle iletişim
kurması gerekebilir
5. Bileşenler arası iletişim, kod tekrarının azaltılmasına yardımcı olur. Örneğin aynı işlevselliği birden fazla
bileşende tekrar tekrar kullanmak yerine, tek bileşende tanımlayıp diğer bileşenlerle paylaşım yapılabilir.
app-
root
todo-
root
todo-
form
todo-
item
todo-
info
Angular’da bir bileşendeki verileri @Input ile, olayları ise @Output ile başka bileşenlerle
paylaşırız.
Input Output
Bileşen
todo-form, todo-item ile veri paylaşmalı
todo-item da, todo-info ile veri paylaşmalı
Hadi birlikte kodlamasını yapalım!
• Servisler; verileri getirme, bu verileri işleme, dış servislere Http istekleri gönderme vs. gibi işlemleri yaptımız
sınıflardır
• Servisler, component (bileşen) içerisinde kod kalabalığı oluşmasının önüne geçerler.
• Servisler, farklı bileşenler arasında verileri veya metotları paylaşmada bize kolaylık sağlarlar. Bu yönleriyle
kod tekrarını azaltırlar, uygulamanın düzenini iyileştirirler ve bakımını kolaylaştırırlar.
• Component (C), Servis (M) ve Şablon (V) arasında köprü işlevi görmelidir (M-V-C).
todo.service.ts
Scope (kapsama alanı)
Servis Oluşturma Kullanım (injection)
• HTTP işlemleri için HttpClientModule isimli modül kullanılır.
• Bu modül, HTTP istekleri göndermek ve yanıtları işlemek için HttpClient isimli bir servis içerir.
• Http işlemleri yapmak istediğimiz yerde bu servisi injecte ederek kullanmaya başlayabiliriz.
• HttpClient servisinin sunmuş olduğu metotlar --------> GET, POST, PUT, DELETE
NullInjectorError: No provider for HttpClient!
• Bileşenlerin bir “hayat döngüsü” vardır. Doğmak, yaşamak ve ölmek gibi…
• Bileşenler, yaratılmalarından yok edilmelerine kadar çeşitli aşamalardan geçer.
• Bu aşamaların her birisinde, farklı amaçlarla farklı kodlar çalıştırmak isteyebiliriz.
Hook Metot Kullanım örneği/amacı
constructor Servisleri enjekte ederiz
ngOnChanges @Input ile işaretlenmiş verilerdeki değişimleri
gözlemleriz
ngOnInit Dış servislere API istekleri atıp, dataları çekeriz.
ngAfterViewInit Bileşene ait şablon (View) tamamen yüklendiğinde
çağrılır. Görünümle ilgili işlemler gerçekleştirmek
için kullanılır.
ngOnDestroy Bileşen kullanımdan kaldırıldığında, yok
edildiğinde çalışan metotdur. Bileşenin elinde
tuttuğu kaynakları serbest bırakması için kullanılır.
Constructor haricindeki diğer tüm Hook metotlar,
kendi Interface’leri Bileşen sınıfına implemente edildikten sonra kullanılabilirler!
Angular Framework (Tanıtım Sunumu) - 2024

Contenu connexe

Similaire à Angular Framework (Tanıtım Sunumu) - 2024

sunum_Service Oriented Architecture (SOA)_off2007
sunum_Service Oriented Architecture (SOA)_off2007sunum_Service Oriented Architecture (SOA)_off2007
sunum_Service Oriented Architecture (SOA)_off2007Efe Eyüboğlu
 
İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21Cihan Özhan
 
agem_intern_report
agem_intern_reportagem_intern_report
agem_intern_reportMeliz Ersoy
 
C sharp-dokumani
C sharp-dokumaniC sharp-dokumani
C sharp-dokumanisersld30
 
Angular Web Programlama
Angular Web ProgramlamaAngular Web Programlama
Angular Web ProgramlamaCihan Özhan
 
Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)
Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)
Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)Kamil Çömlekçi
 
F5 dergisi
F5 dergisiF5 dergisi
F5 dergisifatos11
 
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik DesteğiASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik DesteğiAli İhsan Çalışkan
 
004 Uml Modeli Yapisi [64 Slides]
004 Uml Modeli Yapisi [64 Slides]004 Uml Modeli Yapisi [64 Slides]
004 Uml Modeli Yapisi [64 Slides]Erol Bozkurt
 
Kurumlararası Bilgi Paylaşımı ve Birlikte Çalışabilirlik Esasları
Kurumlararası Bilgi Paylaşımı ve Birlikte Çalışabilirlik EsaslarıKurumlararası Bilgi Paylaşımı ve Birlikte Çalışabilirlik Esasları
Kurumlararası Bilgi Paylaşımı ve Birlikte Çalışabilirlik EsaslarıTolga Çakmak
 
C sharp-ornekleri
C sharp-ornekleriC sharp-ornekleri
C sharp-orneklerisersld30
 
ASP.NET MVC'den ASP.NET Core'a Geçiş
ASP.NET MVC'den ASP.NET Core'a GeçişASP.NET MVC'den ASP.NET Core'a Geçiş
ASP.NET MVC'den ASP.NET Core'a GeçişSinan Bozkuş
 
SQL Server Performans İpuçları
SQL Server Performans İpuçlarıSQL Server Performans İpuçları
SQL Server Performans İpuçlarıturgaysahtiyan
 
C sharp-ornek
C sharp-ornekC sharp-ornek
C sharp-orneksersld30
 
Implementation.pptx
Implementation.pptxImplementation.pptx
Implementation.pptxglkabakc
 
Yazilim mi̇mari̇leri̇(aoy)
Yazilim mi̇mari̇leri̇(aoy)Yazilim mi̇mari̇leri̇(aoy)
Yazilim mi̇mari̇leri̇(aoy)Ahmet Yanik
 

Similaire à Angular Framework (Tanıtım Sunumu) - 2024 (20)

sunum_Service Oriented Architecture (SOA)_off2007
sunum_Service Oriented Architecture (SOA)_off2007sunum_Service Oriented Architecture (SOA)_off2007
sunum_Service Oriented Architecture (SOA)_off2007
 
İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 
agem_intern_report
agem_intern_reportagem_intern_report
agem_intern_report
 
C++ 2011
C++ 2011C++ 2011
C++ 2011
 
C sharp-dokumani
C sharp-dokumaniC sharp-dokumani
C sharp-dokumani
 
Java EE Struts
Java EE StrutsJava EE Struts
Java EE Struts
 
Angular Web Programlama
Angular Web ProgramlamaAngular Web Programlama
Angular Web Programlama
 
Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)
Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)
Kütüphanelerde Web Sitesi Hazırlama ve Uygulama Semineri (FrontPage)
 
F5 dergisi
F5 dergisiF5 dergisi
F5 dergisi
 
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik DesteğiASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
 
004 Uml Modeli Yapisi [64 Slides]
004 Uml Modeli Yapisi [64 Slides]004 Uml Modeli Yapisi [64 Slides]
004 Uml Modeli Yapisi [64 Slides]
 
Kurumlararası Bilgi Paylaşımı ve Birlikte Çalışabilirlik Esasları
Kurumlararası Bilgi Paylaşımı ve Birlikte Çalışabilirlik EsaslarıKurumlararası Bilgi Paylaşımı ve Birlikte Çalışabilirlik Esasları
Kurumlararası Bilgi Paylaşımı ve Birlikte Çalışabilirlik Esasları
 
C sharp-ornekleri
C sharp-ornekleriC sharp-ornekleri
C sharp-ornekleri
 
ASP.NET MVC'den ASP.NET Core'a Geçiş
ASP.NET MVC'den ASP.NET Core'a GeçişASP.NET MVC'den ASP.NET Core'a Geçiş
ASP.NET MVC'den ASP.NET Core'a Geçiş
 
SQL Server Performans İpuçları
SQL Server Performans İpuçlarıSQL Server Performans İpuçları
SQL Server Performans İpuçları
 
C++ 2015
C++ 2015C++ 2015
C++ 2015
 
C sharp-ornek
C sharp-ornekC sharp-ornek
C sharp-ornek
 
Implementation.pptx
Implementation.pptxImplementation.pptx
Implementation.pptx
 
Yazilim mi̇mari̇leri̇(aoy)
Yazilim mi̇mari̇leri̇(aoy)Yazilim mi̇mari̇leri̇(aoy)
Yazilim mi̇mari̇leri̇(aoy)
 

Angular Framework (Tanıtım Sunumu) - 2024

  • 1. 1
  • 2. 1. Angular Nedir? 1. Kullanım Durumu 2. Versiyon Geçmişi 3. Geliştirme Ortamının Hazırlanması (Kurulum) 2. Temel Kavramlar 1. Component (Bileşen) 2. View (Şablonlar) 3. Module 3. Modüller ve Bileşenler 1. Modül oluşturma 2. Component oluşturma 4. Veriler ve Olaylar (data & events) 1. Data binding 2. Event binding 5. Direktifler 1. Yerleşik Direktifler (ngIf, ngFor, vs.) 2. Özel Direktifler 6. Pipe’ler 7. Bileşenler arası iletişim 1. @Input 2. @Output 8. Servisler 1. Servis Oluşturma 2. Servis Kullanımı (injection) 3. Servis Kapsamı (scope) 9. HTTP İşlemleri 1. HTTP Client nedir? 2. Request gönderme 3. Response alma 10. Lifecycle Hooks
  • 3.
  • 4. 1. Angular, açık kaynaklı bir MVC framework’üdür. Library değildir! 2. Javascript (JS) tabanlıdır. Fakat yazımı kolaylaştırmak için Typescript (TS) kullanır. 3. SPA (Single Page Aplication) uygulamalar geliştirmenizi sağlar. 4. Veriler üzerinde çalışmayı ve onları yönetmeyi daha da kolaylaştırır: • Property-Binding & Event-Binding 5. Modüler bir yapısı vardır. Uygulamayı bileşenlere ayırmamızı sağlar. • Modüller, yazdığımız kodları birbirinden bağımsız ve izole olacak şekilde daha küçük alt parçalara ayırdığımız yapılardır 6. Gelişmiş Routing desteği vardır. Uygulama içinde gezinmeyi hızlandırır ve kolaylaştırır. 7. İleri seviyede Dependency Injection mekanizmasına sahiptir, bağımlılıkları kendisi yönetir. 8. Test yazma ve doğrulama yapma imkanı sağlar (jest, karma, …). Hata yönetimini kolaylaştırır. Input Output Bileşen
  • 5.
  • 7. Her şeyden önce NODE.JS kurulu olmalıdır -> https://nodejs.org • NPM (Node Package Manager) • Kurulum sonrası windows’ta restart gerektirebilir! npm install -g @angular/cli@v15-lts ng version Bundan sonra IDE’mizde “YapilacaklarListem” klasörünü proje olarak açıp kod yazmaya başlayabiliriz ng new YapilacaklarListem cd YapilacaklarListem ng serve http://localhost:4200
  • 8.
  • 9. 2.1 Component (Bileşen) Nedir? • Bileşen; birbirinden bağımsız, yeniden kullanılabilir ve özelleştirilebilir küçük parçalardır. • Her bir parçayı, birbirinden izole bir şekilde düşünerek kodlamaya başlamalıyız. • Bileşenler birbirleriyle etkileşime girebilirler. Angular’da her şey Component (Bileşen) olabilir. Bileşen bir button da olabilir, bir liste de, bir tablo dökümü de. Kısacası, anlam yükleyeceğiniz her şey bir bileşen olarak ele alınabilir.
  • 11.
  • 12. 2.2 Component (Bileşen) Yapısı • Uygulamanın yapı taşlarıdır • Uygulamadan neredeyse tüm işlemler Component’ler üzerinden yürür. • MVC yapısında “Controller” görevi üstlenir diyebiliriz. • selector özelliği, bir Component’in Html şablonu içerisinde doğrudan kullanılabilmesini sağlar. • Html içerisinde <app-root> şeklinde etiket (tag) gibi çağrılırlar. • Html içerisinde birden fazla ve içiçe kullanılabilirler. (app-root hariç!!!) • her bileşen, ait olduğu bir Modül içerisinde declare edilmelidir • App-Root bileşeni de ana modül olan AppModule içerisindedir. • Modüller, bileşenleri veya başka modülleri ihtiva eden yapılardır.
  • 13. 1. todo-root 2. todo-form 3. todo-item 4. todo-info todo Modülü Component(1) (2) (3) (4) app- root todo- root todo- form todo- item todo- info
  • 14.
  • 15.  “Todo” Uygulamasını Birlikte Oluşturalım.  Modülü ve Bileşenleri Ekleyelim  Biçimlendirme için «Bootstrap» kütüphanesi kullanalım • todo-root • todo-form • todo-item • todo-info todo Modülü
  • 16.
  • 17. Veri Bağlama (Tek Yönlü) • Verilerimizi Component sınıfı içerisinde bir “property” olarak tanımlarız. • Tanımlanan veriyi Html şablonunda ekrana yazdırmak için {{ veri }} formatını kullanırız. • Tanımlanan verileri, doğrudan bir HTML etikenin Attribute’üne de bağlayabiliriz: <a [href]=veri> linke tıklayınız </a> • Kullanıcı etkileşimi sonrasında tetiklenmiş olan bir olayı (click, mousehover, keypress, vs..) , bir Component içerisindeki metod ile birbirine bağlar • <etiket (event)="method()"> Olay (Event) Bağlama Veri Bağlama Tek Yönlü İki Yönlü
  • 18. Veri Bağlama (İki Yönlü) Angular’da veri bağlama 2’ye ayrılır: Veri Bağlama Tek Yönlü (one-way) İki Yönlü (two-way) Component Template Component Template Two-Way Data Binding nedir? Bir form öğesi (örneğin input) ve bir Component değişkeni arasında çift yönlü veri akışını sağlar. Böylece form öğesinin değeri değiştiğinde Component değişkeni güncellenir. Tersi durum da geçerlidir. <input [(ngModel)]=“veri"> [] ile () birleşimine dikkat! Bu örnekte “veri" değişkeni, Input elementinin değeri ile senkronize hale gelmiştir. Not: ngModel kullanabilmeniz için FormsModule import edilmelidir!
  • 19.
  • 20. Mevcuttaki HTML elementleri üzerinde değişiklikler (manipülasyon) yapmamızı sağlayan yapılardır. Bu değişiklikler:  Bir bölümü gizleme veya tekrar gösterme  Bir bölümü, sayfada birden fazla kez tekrarlama (döngü)  Bir bölüm üzerinde farklı biçimlendirmeler yapma (rengini değiştirme, boyunu büyütme vs.) Angular’da 3 çeşit direktif vardır: 1. Attribute direktifleri 2. Yapısal (built-in) direktifler 3. Özel (custom) direktifler
  • 21.
  • 22. • Şablon (view) içerisinde kullanılan yardımcı metotlardır. • Direktifler şablondaki Html elementlerinde değişim yaparken, Pipe’lar da şablondaki veriler üzerinde değişim yaparlar. • Pipe metotları, boru ( | ) sembolü yardımıyla bir veriye bağlanırlar. • Veriyi belirli bir formata dönüştürmek veya işlemek amacıyla kullanılırlar. {{ veri | buyukHarflereDonustur }} • Pipe’lar zincirleme şeklinde kullanılabilirler, birbirlerine bağlanabilirler: {{ tarih | date:”dd.mm.yyyy” }} • Angular tarafından hazır kullanıma sunulmuş Pipe’lar olduğu gibi kendinize ait Pipe’lar da oluşturabilirsiniz {{ veri | tersCevir | buyukHarflereDonustur }}
  • 23.
  • 24. Verilerin ve Olayların, bileşenler arasında paylaşılabilmesi anlamına gelir. Bileşenler arası iletişim kurmaya neden ihtiyacımız var? 1. Örneğin, kullanıcının bir bileşende girdiği verilerin başka bir bileşende kullanılması gerekebilir. 2. Bir form bileşenindeki Kaydet butonuna tıklanmasıyla forma girilen bilgiler veritabanına kaydedilmek istenebilir. 3. Bazı bileşenler, diğer bileşenlerin varlığına bağımlı olabilir. Örneğin bir liste bileşeni, seçilen bir liste öğesin ayrıntılarını gösteren ayrı bir bileşenin varlığına ihtiyaç duyabilir. (ebys-imzalanmis-evraklar) - (ebys-evrak-detay) 4. Her bir bileşen, tek bir sorumluluğa sahip olmalıdır (SOLID). Fakat bazı durumlarda bir bileşenin tek başına sorumluluklarını yerine getirmesi mümkün olmayabilir. Bu durumda diğer bileşenlerle iletişim kurması gerekebilir 5. Bileşenler arası iletişim, kod tekrarının azaltılmasına yardımcı olur. Örneğin aynı işlevselliği birden fazla bileşende tekrar tekrar kullanmak yerine, tek bileşende tanımlayıp diğer bileşenlerle paylaşım yapılabilir. app- root todo- root todo- form todo- item todo- info Angular’da bir bileşendeki verileri @Input ile, olayları ise @Output ile başka bileşenlerle paylaşırız. Input Output Bileşen
  • 25. todo-form, todo-item ile veri paylaşmalı todo-item da, todo-info ile veri paylaşmalı Hadi birlikte kodlamasını yapalım!
  • 26.
  • 27. • Servisler; verileri getirme, bu verileri işleme, dış servislere Http istekleri gönderme vs. gibi işlemleri yaptımız sınıflardır • Servisler, component (bileşen) içerisinde kod kalabalığı oluşmasının önüne geçerler. • Servisler, farklı bileşenler arasında verileri veya metotları paylaşmada bize kolaylık sağlarlar. Bu yönleriyle kod tekrarını azaltırlar, uygulamanın düzenini iyileştirirler ve bakımını kolaylaştırırlar. • Component (C), Servis (M) ve Şablon (V) arasında köprü işlevi görmelidir (M-V-C). todo.service.ts Scope (kapsama alanı) Servis Oluşturma Kullanım (injection)
  • 28.
  • 29. • HTTP işlemleri için HttpClientModule isimli modül kullanılır. • Bu modül, HTTP istekleri göndermek ve yanıtları işlemek için HttpClient isimli bir servis içerir. • Http işlemleri yapmak istediğimiz yerde bu servisi injecte ederek kullanmaya başlayabiliriz. • HttpClient servisinin sunmuş olduğu metotlar --------> GET, POST, PUT, DELETE NullInjectorError: No provider for HttpClient!
  • 30.
  • 31. • Bileşenlerin bir “hayat döngüsü” vardır. Doğmak, yaşamak ve ölmek gibi… • Bileşenler, yaratılmalarından yok edilmelerine kadar çeşitli aşamalardan geçer. • Bu aşamaların her birisinde, farklı amaçlarla farklı kodlar çalıştırmak isteyebiliriz. Hook Metot Kullanım örneği/amacı constructor Servisleri enjekte ederiz ngOnChanges @Input ile işaretlenmiş verilerdeki değişimleri gözlemleriz ngOnInit Dış servislere API istekleri atıp, dataları çekeriz. ngAfterViewInit Bileşene ait şablon (View) tamamen yüklendiğinde çağrılır. Görünümle ilgili işlemler gerçekleştirmek için kullanılır. ngOnDestroy Bileşen kullanımdan kaldırıldığında, yok edildiğinde çalışan metotdur. Bileşenin elinde tuttuğu kaynakları serbest bırakması için kullanılır. Constructor haricindeki diğer tüm Hook metotlar, kendi Interface’leri Bileşen sınıfına implemente edildikten sonra kullanılabilirler!