Ana içeriğe atla

Angular Dinamik Component Oluşturma ve Dinamik Componentler ile Çalışma



Angular ile çalışırken bazı durumlarda dinamik olarak oluşan ve yönetilen modüler bir alt yapı ihtiyacımız olabilir. Bu ihtiyacımızı karşılayabilmek için angular 'ComponentFactoryResolver' adında bir sınıfa sahip. Bu sınıf aracılığı ile oldukça esnek ve runtime da çalışan dinamik bir yapı hazırlayabiliriz.

Adım Adım Dinamik Modül Sistemi Uygulama

 1- Yeni bir proje oluşturuyoruz.

Routing mekanizmasına sahip bir angular uygulamasını console yardımı ile aşağıdaki komutu çalıştırarak uyguluyoruz.


ng new test-dinamik --routing


2 - Örnek Uygulamamızın Kurgusu

Örnek uygulamamızda bir adet mesaj componentini dinamik olarak ilgili sayfamızın içerisine dahil ediyor olacağız. Modülümüzü dinamik yüklerken aynı zamanda @Input() anahtar kelimesi ile child component imize de veri gönderiyor olacağız.

Şimdi Adım Adım İşlemimize Geçeli :

app.component.html

app.component.html dosyamıza aşağdaki gibi bir html ekliyoruz. İlgili html ComponentContainer Id si ile içerisine dinamik olarak bizim yükleyeceğimiz componentleri alıyor olacaktır.

<template #Componentcontainer></template>


app.component.ts

öncelikle app.component.ts dosyamızın constructor u aşağıdaki gibi görünmeli. Constructor ımızda Dinamik çalışmamızı sağlayacak ComponentFactoryResolver nesnemizi dependency injection ile tanımlıyor. Ve hemen üstünde de childcomponent imizin hangi Id ye sahip kontrol içerisine yükleneceğini tanımlıyoruz.

import { Component, ViewChild, ViewContainerRef,
ComponentFactoryResolver, Input } from '@angular/core';


@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {

@ViewChild('Componentcontainer', { read: ViewContainerRef }) entry: ViewContainerRef;
constructor(private resolver: ComponentFactoryResolver) {
}
}

Message Component imizi dinamik olarak çağırma



createContainerViewModel() {
this.entry.clear();
const factory = this.resolver.resolveComponentFactory(MessageComponent);
let componentRefItem = this.containerEntry.createComponent(factory);
this.componentRef.push(componentRefItem);
this.componentRef.instance.message="hello world";
}



Bu blogdaki popüler yayınlar

SQL DATEADD() Fonksiyonu(Sql de tarihe ay,gün,yıl ekleme)

Kullanım Kalıbı : DATEADD (datepart , number , date ) . datepart ksımına month,year,day vs artırmak istediğimiz tarih birimini yazıyoruz. . number ksımına arttırmak istediğimiz miktarı yazıyoruz. . date kısmına da hangi tarih e ekleneceğini belirtiyoruz. Örnek olarak şu an ki tarihten 1 ay sonrasını görmek için : Şu anki tarih '10-1-2011' olsun(gün,ay,yıl) Sorgu : SELECT DATEADD(MONTH,+1,GETDATE()) Çıktı alacağımız tarih : '10-2-2011' şekinde olacaktır.

Netsis NetOpenX50 Nesnesini C# Visual Studio Üzerinde Çalıştırma

Netsis ile sipariş, ürün, fiyat, stok entegrasyonları yaparken NetOpenX apisini kullanmamız gerekiyor. Netsis kullanan bir firma ile entegrasyon geliştirmeden önce yapmamız gereken şey firmanın netopenx api lisansı alıp almadığını öğrenmeliyiz.Bunu onaylattıktan sonra Visual Studio projemize NetOpenx50 dosyasını referans olarak eklemek kalıyor. Projemize referans eklemek için öncelikle NetOpenX50.dll ini bilgisayarımıza indiriyoruz.Ardından komut sataırına girerek aşağıdaki komutu vermeliyiz. regsvr32 C:\Netsis\NetOpenX50.dll Bu işlem sonrasında NetOpenX50 dosyamızı com objesi olarak işletim sistemimize kayıt etmiş oluyoruz. Hemen ardından visual studio projemizi açarak projenin üzerinde References kısmına sağ tuş tıklayarak yeni referens ekle diyoruz.Ardından çıkan pencereden sol panelden COM objelerini seçiyoruz ve orada "NetOpenX50 Kütüphanesi" alanı zaten çıkıyor ve direk seçip referans olarak projemize ekleyebiliyoruz. NetOpenX50 apisinin kullanımı için her d...

Logo (LOJECTS.exe ve LOBJECTS.dll) Register İşlemleri

LOBJECTS.dll register işlemi : başlat-> çalıştır -> cmd yazıp konsole ekranına geçiyoruz REGİSTER İÇİN : regsvr32 logoDosyaYolu\LOBJECTS.dll yazıyoruz ve dll imizi register ediyoruz UNREGISTER İÇİN : regsvr32 -u logoDosyaYolu\LOBJECTS.dll ile de unregister edebiliriz. LOBJECTS.exe register işlemi : başlat-> çalıştır -> cmd yazıp konsole ekranına geçiyoruz REGİSTER İÇİN : logoDosyaYolu\LOBJECTS.exe -REGSERVER yazıyoruz ve LOBJECTS.exe mizi register ediyoruz. UNREGISTER İÇİN : logoDosyaYolu\LOBJECTS.exe -UNREGSERVER yazıyoruz ve LOBJECTS.exe mizi unregister ediyoruz. Umarım yararlı olmuştur.