Tanımladığınız route’ larda query parameter yada fragment’ larınız olabilir. Query parameter, "?" işaretinden sonraki değerlerdir. Fragment ise (#) işaretinden sonraki değerlerdir.

Bu başlık altında inceleyeceğimiz 2 konu var.
Query parameters angular route link’ e nasıl eklenir ? Ve bu parametrelere nasıl erişilir ?

Uygulama Senaryosu;

Anasayfada listelenen ürünlerin linklerine, "?addToBasket=true" query parameter ve değerini ekliycez. Ürün sayfasına tıkladığında, bu parametre dolu ise, buna istinaden herhangi bir aksiyon alınabilir.

Query parameters ve fragment angular route link’ e nasıl eklenir ?

Query parameters, element’ e property olarak eklenir ve değer olarak javascript objesi alır;

[queryParams]= "{parameter:value}">

Template tarafında linkleme;

<li *ngFor="let product of products" >
        <a [routerLink]="['/product', product.id]"
        [queryParams]= "{addToBasket:true}">
            <h3>{{product.name}}</h3>
        </a>    
    </li>
  • routerLink özelliğinin yanına, queryParams özelliğini ekleyip, içerisindeki obje’ ye addToBasket parametresi ekleyip değerini true verdik.

  • Artık linklerin sonuna "?addToBasket=true" ekleniyor.

  • Bir linkte teknik olarak sadece 1 fragment olabileceği için, fragment özelliği sadece bir değer alır;

[fragment]=" 'değer' "
  • Çift tırnak içinde, tek tırnak işaretlerinin arasında yazdığımıza dikkat edin.Çünkü ilgili değeri elle yazıyoruz ve string olarak kabul edilmesini istiyoruz. Eğerki değişken kullansaydık, tek tırnak eklememize gerek yoktu.
<li *ngFor="let product of products" >
        <a [routerLink]="['/product', product.id]"
        [queryParams]= "{addToBasket:true}"
        [fragment]=" 'content' "
        >
            <h3>{{product.name}}</h3>
        </a>    
    </li>

TypeScript tarafında linkleme;

  • Query parameter lı link oluşturmayı typescript kodu içerisinde de yapmaya ihtiyaç duyabiliriz.
    Yapmanız gereken şey, daha önce kullandığımız route.nagivate metoduna ikinci değer olarak queryParameters objesini ve içerisinde de değerlerini vermek;
this.router.navigate(['/product', 0], {queryParams: {addToBasket: true}} );

Query parameters ve fragment değerlerine nasıl ulaşılır ?

  • Route üzerindeki değerlere ulaşmak istiyorsak her zaman "activatedRoute" kütüphanesine ihtiyacımız var. activatedRoute kütüphanesini constructor’ da eklemeyi unutmayın !
    QueryParameters olarak eklediğiniz her parametre, "activatedRoute.snapshot.queryParams" objesinin içerisinde bir öznitelik olarak bulunmaktadır.
constructor(private route: ActivatedRoute) { }

  ngOnInit() {

      if(this.route.snapshot.queryParams.addToBasket) {
      //sepete ekleme işlemleri
      this.addBasketDegeri = this.route.snapshot.queryParams.addToBasket;
    }

  }
  • if bloğu içerisinde "this.route.snapshot.queryParams" objesinden sonra ilgili parametreyi yazarak, ilgili parametre route’ da var ise kontrolü yapıp, ardından herhangi bir değişkene değerini atayabilirsiniz.

  • Aynı şekilde fragment içinde, "this.route.snapshot.fragment" özelliğinden değerine ulaşabilirsiniz.

CANLI ÖRNEK;

Last modified: 26 April 2020

Author

Comments

Write a Reply or Comment

Your email address will not be published.