Yükleniyor...

SSS (FAQ)

Angular’da SSS (Sıkça Sorulan Sorular) bileşeni, kullanıcıların yaygın sorulara hızlı erişimini sağlamak ve uygulama deneyimini geliştirmek amacıyla kullanılan bir yapı taşını temsil eder. SSS bileşenleri, modern web uygulamaları ve SPA’larda (Single Page Applications) kullanıcı etkileşimini kolaylaştırırken, geliştiricilere bileşen tabanlı düşünce, durum yönetimi, veri akışı ve yaşam döngüsü yönetimi konularında pratik deneyim sağlar.
SSS bileşenleri, tekrar kullanılabilir ve ölçeklenebilir yapılar oluşturmak için ideal bir örnektir. Angular’da SSS tasarlarken, prop drilling (özellikleri gereksiz yere alt bileşenlere iletme), gereksiz yeniden render işlemleri ve doğrudan durum değişiklikleri gibi yaygın hatalardan kaçınmak önemlidir. Bu içerikte, okuyucu temel bir SSS bileşeni oluşturmayı, gelişmiş veri yönetimi ve asenkron işlemlerle zenginleştirilmiş pratik örnekleri, hata yönetimi ve performans optimizasyon tekniklerini öğrenecektir.
Ayrıca, SSS bileşenleri Angular’ın ngFor ve ngIf gibi yapısal direktiflerini, olay ve özellik bağlamalarını, servis ve Observable tabanlı veri akışını anlamak için mükemmel bir örnek sunar. Bu bilgiler, proje ölçeğine uygun, güvenli ve sürdürülebilir bileşenler geliştirmek için kritik öneme sahiptir.

Temel Örnek

typescript
TYPESCRIPT Code
import { Component } from '@angular/core';

@Component({
selector: 'app-faq',
template: `       <div *ngFor="let item of faqs; let i = index" class="faq-item">         <h3 (click)="toggle(i)">{{ item.question }}</h3>         <p *ngIf="item.open">{{ item.answer }}</p>       </div>
`,
styles: [`
.faq-item { margin-bottom: 1rem; cursor: pointer; }
h3 { font-weight: bold; }
`]
})
export class FaqComponent {
faqs = [
{ question: 'Angular nedir?', answer: 'Angular, modern web uygulamaları geliştirmek için bir framework'tür.', open: false },
{ question: 'Veri yönetimi nasıl yapılır?', answer: 'Servisler ve RxJS kullanarak veri akışını kontrol edebilirsiniz.', open: false }
];

toggle(index: number) {
this.faqs[index].open = !this.faqs[index].open;
}
}

Yukarıdaki örnekte @Component dekoratörü ile selector, template ve stil tanımlamaları yapılmıştır. ngFor direktifi ile SSS öğeleri dinamik olarak oluşturulur ve (click) olay bağlaması ile toggle() metodu çağrılır. ngIf direktifi ile cevaplar yalnızca açık durumdayken render edilir, bu sayede gereksiz DOM işlemleri önlenir.
Bu yapı, durumu bileşen içinde yöneterek prop drilling’i önler ve bileşenin yeniden kullanılabilirliğini artırır. *ngIf kullanımı performansı optimize ederken, template ve logic ayrımı, bileşenin bakımını ve ölçeklenebilirliğini kolaylaştırır. Bu örnek, gerçek Angular projelerinde SSS bileşenlerinin verimli ve doğru şekilde nasıl tasarlanacağını göstermektedir.

Pratik Örnek

typescript
TYPESCRIPT Code
import { Component, OnInit } from '@angular/core';
import { FaqService } from './faq.service';

@Component({
selector: 'app-faq-advanced',
template: `       <div *ngFor="let item of faqs; let i = index" class="faq-item">         <h3 (click)="toggle(i)">{{ item.question }}</h3>         <p *ngIf="item.open">{{ item.answer }}</p>       </div>
`,
styles: [`
.faq-item { margin-bottom: 1rem; cursor: pointer; }
h3 { font-weight: bold; }
`]
})
export class FaqAdvancedComponent implements OnInit {
faqs: any[] = [];

constructor(private faqService: FaqService) {}

ngOnInit() {
this.faqService.getFaqs().subscribe(data => {
this.faqs = data.map(item => ({ ...item, open: false }));
});
}

toggle(index: number) {
this.faqs[index].open = !this.faqs[index].open;
}
}

Advanced Angular Implementation

typescript
TYPESCRIPT Code
import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';
import { FaqService } from './faq.service';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

@Component({
selector: 'app-faq-optimized',
templateUrl: './faq-optimized.component.html',
styleUrls: ['./faq-optimized.component.css'],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class FaqOptimizedComponent implements OnInit {
faqs$: Observable<any[]> = this.faqService.getFaqs().pipe(
map(faqs => faqs.map(item => ({ ...item, open: false })))
);

constructor(private faqService: FaqService) {}

ngOnInit() {}

toggle(item: any) {
item.open = !item.open;
}
}

Angular’da SSS (FAQ) bileşenlerini geliştirirken, bileşen tabanlı yapı, durum yönetimi, veri akışı ve performans optimizasyonu önceliklidir. OnPush ChangeDetection stratejisi kullanarak gereksiz render işlemlerinden kaçınılabilir. Servisler ve Observable’lar, veri akışını ve hata yönetimini merkezi bir şekilde kontrol etmeyi sağlar. Prop drilling’den kaçınmak, bileşenlerin tekrar kullanılabilirliğini artırır. Güvenlik ve performans önlemleri, uygulamanın ölçeklenebilir ve sürdürülebilir olmasını garanti eder.

📊 Kapsamlı Referans

Angular Element/Method Description Syntax Example Notes
Component Bileşen tanımlar @Component({...}) @Component({selector:'app', template:'', styles:[]}) Angular’ın temel yapı taşı
ngFor Array üzerinde döngü *ngFor="let item of items" <div *ngFor="let i of items">{{i}}</div> Dinamik liste oluşturur
ngIf Koşullu render *ngIf="condition" <p *ngIf="show">Metin</p> Gereksiz render’ı engeller
Event Binding Olay bağlama (click)="method()" <button (click)="toggle()">Tıkla</button> Kullanıcı etkileşimi
Property Binding Özellik bağlama [property]="value" <img [src]="imgUrl"> Alt bileşene veri aktarımı
Service Veri yönetimi constructor(private svc: Service){} Servis ile veri kullanımı Yeniden kullanılabilir
Observable Reaktif veri import {Observable} from 'rxjs' data$: Observable<any[]> Asenkron veri yönetimi
ngOnInit Yaşam döngüsü hook ngOnInit(){} ngOnInit() { ... } Bileşen başlatma
ChangeDetectionStrategy Performans optimizasyonu changeDetection: ChangeDetectionStrategy.OnPush @Component({..., changeDetection: ChangeDetectionStrategy.OnPush}) Render kontrolü
... ... ... ... ...

📊 Complete Angular Properties Reference

Property Values Default Description Angular Support
selector string required Bileşen seçici adı Angular 2+
template string '' Bileşen HTML şablonu Angular 2+
styles array [] Bileşen CSS stilleri Angular 2+
changeDetection OnPush/Default Default Değişiklik tespit stratejisi Angular 2+
providers array [] Bileşen servisleri Angular 2+
inputs array [] Girdi özellikleri Angular 2+
outputs array [] Çıkış olayları Angular 2+
encapsulation Emulated/None/ShadowDom Emulated CSS kapsülleme Angular 2+
animations array [] Animasyon tanımlamaları Angular 4+
viewProviders array [] Sadece görünüm için servisler Angular 2+
host object {} Host bağlamaları Angular 2+

SSS (FAQ) bileşenlerini öğrenmek, Angular’da bileşen tabanlı mimari, durum yönetimi, veri akışı ve performans optimizasyonu konularında temel beceriler kazandırır. Bu bilgiler, tekrar kullanılabilir ve ölçeklenebilir bileşenler oluşturmayı kolaylaştırır. İleri seviye çalışmalar için NgRx, RxJS kalıpları, yönlendirme ve Lazy Loading konuları önerilir. Angular DevTools gibi araçlarla proje üzerinde pratik yaparak bilgiyi pekiştirmek, projelerde gerçek dünya uygulamalarını geliştirmeyi sağlar.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

4
Sorular
🎯
70%
Geçmek İçin
♾️
Süre
🔄
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek