﻿
{"id":8217,"date":"2018-06-19T19:22:48","date_gmt":"2018-06-19T19:22:48","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=8217"},"modified":"2018-06-19T19:22:48","modified_gmt":"2018-06-19T19:22:48","slug":"angular-4-ile-routing-navigation","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/angular-4-ile-routing-navigation\/","title":{"rendered":"Angular 4 \u0130le Routing Navigation"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>\u00d6nceki yaz\u0131lar\u0131mdan <a href=\"http:\/\/www.gencayyildiz.com\/blog\/angular-4-routing-mekanizmasi\/\" rel=\"noopener\" target=\"_blank\">Angular 4 Routing Mekanizmas\u0131<\/a> ba\u015fl\u0131kl\u0131 makalemde Angular ile routing i\u015flemlerinin nas\u0131l ger\u00e7ekle\u015ftirildi\u011fini ele alm\u0131\u015ft\u0131k. Bu i\u00e7eri\u011fimizde ise Angular&#8217;da Routing Navigation ile bir componentten bir ba\u015fka componente y\u00f6nlendirilme i\u015flemini inceleyece\u011fiz.<\/p>\n<p>Diyelim ki; &#8220;AComponent&#8221;, &#8220;BComponent&#8221;, &#8220;CComponent&#8221; ve &#8220;ErrorComponent&#8221; olmak \u00fczere d\u00f6rt adet componentimiz olsun ve route yap\u0131lanmas\u0131da a\u015fa\u011f\u0131daki gibi olsun.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nimport { BrowserModule } from '@angular\/platform-browser';\r\nimport { NgModule } from '@angular\/core';\r\nimport { Router, RouterModule, Routes } from &quot;@angular\/router&quot;;\r\n\r\nimport { AppComponent } from '.\/app.component';\r\nimport { AComponent } from '.\/a\/a.component';\r\nimport { BComponent } from '.\/b\/b.component';\r\nimport { CComponent } from '.\/c\/c.component';\r\nimport { ErrorComponent } from '.\/error\/error.component';\r\n\r\nexport const AppRoutes: Routes = &#x5B;\r\n  { path: &quot;&quot;, redirectTo: &quot;acomponent&quot;, pathMatch: &quot;full&quot; },\r\n  { path: &quot;acomponent&quot;, component: AComponent },\r\n  { path: &quot;bcomponent&quot;, component: BComponent },\r\n  { path: &quot;ccomponent&quot;, component: CComponent },\r\n  { path: &quot;**&quot;, component: ErrorComponent }\r\n];\r\n\r\n@NgModule({\r\n  declarations: &#x5B;\r\n    AppComponent,\r\n    AComponent,\r\n    BComponent,\r\n    CComponent,\r\n    ErrorComponent\r\n  ],\r\n  imports: &#x5B;\r\n    BrowserModule,\r\n    RouterModule.forRoot(AppRoutes)\r\n  ],\r\n  providers: &#x5B;],\r\n  bootstrap: &#x5B;AppComponent]\r\n})\r\nexport class AppModule { }\r\n<\/pre>\n<p>Ana componentimiz olan &#8220;AppComponent&#8221; \u00fczerinde de a\u015fa\u011f\u0131daki gibi \u00e7al\u0131\u015fmalar ger\u00e7ekle\u015ftirilmi\u015f olsun.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n&lt;div class=&quot;row&quot;&gt;\r\n  &lt;div class=&quot;list-group&quot;&gt;\r\n    &lt;a routerLink=&quot;acomponent&quot; &#x5B;routerLinkActiveOptions]=&quot;{exact:true}&quot; routerLinkActive=&quot;active&quot; class=&quot;list-group-item list-group-item-action active&quot;&gt;ASayfas\u0131&lt;\/a&gt;\r\n    &lt;a routerLink=&quot;bcomponent&quot; &#x5B;routerLinkActiveOptions]=&quot;{exact:true}&quot; routerLinkActive=&quot;active&quot; class=&quot;list-group-item list-group-item-action&quot;&gt;BSayfas\u0131&lt;\/a&gt;\r\n    &lt;a routerLink=&quot;ccomponent&quot; &#x5B;routerLinkActiveOptions]=&quot;{exact:true}&quot; routerLinkActive=&quot;active&quot; class=&quot;list-group-item list-group-item-action&quot;&gt;CSayfas\u0131&lt;\/a&gt;\r\n    &lt;a routerLink=&quot;errorcomponent&quot; routerLinkActive=&quot;active&quot; class=&quot;list-group-item list-group-item-action&quot;&gt;ErrorSayfas\u0131&lt;\/a&gt;\r\n  &lt;\/div&gt;\r\n  &lt;div&gt;\r\n    &lt;router-outlet&gt;&lt;\/router-outlet&gt;\r\n  &lt;\/div&gt;\r\n&lt;\/div&gt;\r\n<\/pre>\n<p>E\u011fer ki uygulaman\u0131z\u0131 herhangi bir noktada herhangi bir componente y\u00f6nlendirmek istiyorsan\u0131z e\u011fer routing navigation kullanabilirsiniz. Biz burada \u00f6rnek olarak hata al\u0131nd\u0131\u011f\u0131 zaman &#8220;ErrorComponent&#8221; i\u00e7erisinde tekrardan uygulamay\u0131 &#8220;AComponent&#8221;e y\u00f6nlendirece\u011fiz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nimport { Component, OnInit } from '@angular\/core';\r\nimport { Router } from &quot;@angular\/router&quot;;\r\n@Component({\r\n  selector: 'app-error',\r\n  templateUrl: '.\/error.component.html',\r\n  styleUrls: &#x5B;'.\/error.component.css']\r\n})\r\nexport class ErrorComponent implements OnInit {\r\n\r\n  constructor(private route: Router) { }\r\n\r\n  ngOnInit() {\r\n    this.route.navigate(&#x5B;&quot;acomponent&quot;]);\r\n    alert(&quot;Hata sayfas\u0131ndan bu sayfaya y\u00f6nlendirildiniz.&quot;)\r\n  }\r\n}\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funa dikkat ederseniz e\u011fer &#8220;@angular\/router&#8221; dizininden import edilen &#8220;Router&#8221; mod\u00fcl\u00fcn\u00fc kullanmaktay\u0131z. Bu mod\u00fcl \u00fczerinden gerekli navigate fonksiyonuna eri\u015fmekte ve istenilen componente y\u00f6nlendirme i\u015flemi ger\u00e7ekle\u015ftirilmektedir.<\/p>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/06\/Angular-4-\u0130le-Routing-Navigation.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/06\/Angular-4-\u0130le-Routing-Navigation.gif\" alt=\"Angular 4 \u0130le Routing Navigation\" width=\"588\" height=\"378\" class=\"aligncenter size-full wp-image-8223\" \/><\/a><\/p>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere y\u00f6nlendirme i\u015flemimiz kolay bir \u015fekilde ba\u015far\u0131yla ger\u00e7ekle\u015ftirilmi\u015ftir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nexport const AppRoutes: Routes = &#x5B;\r\n  { path: &quot;&quot;, redirectTo: &quot;acomponent\/:params&quot;, pathMatch: &quot;full&quot; },\r\n  { path: &quot;acomponent\/:params&quot;, component: AComponent },\r\n  { path: &quot;bcomponent&quot;, component: BComponent },\r\n  { path: &quot;ccomponent&quot;, component: CComponent },\r\n  { path: &quot;**&quot;, component: ErrorComponent }\r\n];\r\n<\/pre>\n<p>E\u011fer ki y\u00f6nlendirme yap\u0131lacak route yap\u0131lanmas\u0131 yukar\u0131daki gibi parametre al\u0131yorsa a\u015fa\u011f\u0131daki gibi ilgili parametreye de\u011fer g\u00f6nderebiliriz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nthis.route.navigate(&#x5B;&quot;acomponent&quot;, &quot;parametreDegeri&quot;]);\r\n<\/pre>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/06\/Angular-4-\u0130le-Routing-Navigation-1.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/06\/Angular-4-\u0130le-Routing-Navigation-1.gif\" alt=\"Angular 4 \u0130le Routing Navigation\" width=\"588\" height=\"378\" class=\"aligncenter size-full wp-image-8225\" \/><\/a><br \/>\nBurada navigate fonksiyonun dizi tipinde olan ilk parametresinde \u015f\u00f6yle bir genellemeye varabiliriz&#8230; Dizinin her bir eleman\u0131 farkl\u0131 bir parametre ya da dizinmi\u015f gibi y\u00f6nlendirme linkine eklenecektir.<br \/>\n\u00d6rne\u011fin;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nthis.route.navigate(&#x5B;&quot;acomponent&quot;, &quot;parametreDegeri&quot;, &quot;deger2&quot;, &quot;deger3&quot;, ., ., .]);\r\n<\/pre>\n<p>\u015feklinde kullan\u0131mda bulunursak e\u011fer y\u00f6nlendirilecek link<br \/>\n<em>&#8220;http:\/\/localhost:4200\/acomponent\/parametreDegeri\/deger2\/deger3\/.\/.\/.&#8221;<\/em><br \/>\n\u015feklinde olacakt\u0131r.<\/p>\n<h3>Query Params \u0130le Route Navigation<\/h3>\n<p>T\u00fcm bunlar\u0131n d\u0131\u015f\u0131nda y\u00f6nlendirme i\u015flemi s\u0131ras\u0131nda olu\u015fturulacak adrese Query String benzeri olan Query Params de\u011ferleride verebiliriz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nthis.route.navigate(&#x5B;&quot;acomponent&quot;, &quot;parametreDegeri&quot;], { queryParams: { queryParams1: &quot;query1&quot;, queryParams2: &quot;query2&quot; } });\r\n<\/pre>\n<p>\u0130kinci parametre i\u00e7erisinde &#8220;queryParams&#8221; ile verilen t\u00fcm de\u011ferler olu\u015fturulacak linke Query Params olarak eklenmektedir.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/06\/Angular-4-\u0130le-Routing-Navigation-2.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/06\/Angular-4-\u0130le-Routing-Navigation-2.gif\" alt=\"Angular 4 \u0130le Routing Navigation\" width=\"600\" height=\"233\" class=\"aligncenter size-full wp-image-8228\" \/><\/a><\/p>\n<p>Bu Query Paramslar\u0131n de\u011ferini okuyabilmek i\u00e7in <a href=\"http:\/\/www.gencayyildiz.com\/blog\/angular-4-routingde-parametre-tanimlama-ve-degerini-okuma\/\" rel=\"noopener\" target=\"_blank\">Angular 4 Routing\u2019de Parametre Tan\u0131mlama ve De\u011ferini Okuma<\/a> ba\u015fl\u0131kl\u0131 makalemde de\u011findi\u011fim y\u00f6ntemi uygulayaca\u011f\u0131z.<\/p>\n<p>\u00d6rne\u011fin;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    this.activatedRoute.queryParams.subscribe(p =&gt; {\r\n      this.queryParams1 = p.queryParams1;\r\n      this.queryParams2 = p.queryParams2;\r\n    });\r\n<\/pre>\n<p>\u015feklinde. Burada tek dikkatli olman\u0131z gereken husus, belirtilen adreste normal parametre de\u011ferleri \u00fczerinden \u00f6rneklendirme yap\u0131ld\u0131\u011f\u0131 i\u00e7in &#8220;params&#8221; de\u011ferleri \u00fczerinde bir subscribe uygulanm\u0131\u015ft\u0131r. Burada Query Paramslar mevzu bahis oldu\u011fundan dolay\u0131 &#8220;queryParams&#8221; de\u011ferleri elde edilmesi gerekmektedir. Bu noktaya dikkatinizi \u00e7ekerim&#8230;<\/p>\n<h3>Query Params \u0130le RouterLink Olu\u015fturma<\/h3>\n<p>E\u011fer ki olu\u015fturulacak link yap\u0131s\u0131n\u0131n Query Params de\u011ferleriyle olu\u015fturulmas\u0131n\u0131 istiyorsan\u0131z a\u015fa\u011f\u0131daki gibi bir \u00e7al\u0131\u015fma ger\u00e7ekle\u015ftirebilirsiniz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    &lt;a &#x5B;routerLink]=&quot;&#x5B;'\/acomponent\/parametreDegeri']&quot; &#x5B;queryParams]=&quot;{queryParams1: 'query1', queryParams2: 'query2'}&quot; &#x5B;routerLinkActiveOptions]=&quot;{exact:true}&quot; routerLinkActive=&quot;active&quot; class=&quot;list-group-item list-group-item-action active&quot;&gt;ASayfas\u0131&lt;\/a&gt;\r\n<\/pre>\n<p>Burada [routerLink] ile yolumuzu belirtiyoruz. [queryParams] i\u00e7erisinde ise bu linke t\u0131kland\u0131\u011f\u0131nda ta\u015f\u0131mak istedi\u011fimiz verileri Query Params de\u011ferlerine veriyoruz. Gerisi bildi\u011finiz link yap\u0131s\u0131nda kullan\u0131lan attributelard\u0131r.<\/p>\n<p>Evet&#8230; Angular ile Route Navigation \u00fczerine olduk\u00e7a geni\u015f kapsaml\u0131 bir i\u00e7erik olu\u015fturmu\u015f olduk.<\/p>\n<p>Faydalanman\u0131z dile\u011fiyle&#8230;<\/p>\n<p>Sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar dilerim&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, \u00d6nceki yaz\u0131lar\u0131mdan Angular 4 Routing Mekanizmas\u0131 ba\u015fl\u0131kl\u0131 makalemde Angular ile routing i\u015flemlerinin nas\u0131l ger\u00e7ekle\u015ftirildi\u011fini ele alm\u0131\u015ft\u0131k. Bu i\u00e7eri\u011fimizde ise Angular&#8217;da Routing Navigation ile bir componentten bir ba\u015fka componente y\u00f6nlendirilme i\u015flemini inceleyece\u011fiz. Diyelim ki;&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":7246,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2144],"tags":[2156,2146,2381,2383,2380,2384,2385,2382],"class_list":["post-8217","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-angular-4","tag-angular","tag-angular-4","tag-angular-route-navigation","tag-navigation","tag-query-params","tag-query-params-route-navigation","tag-query-params-routerlink","tag-route-navigation"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/8217","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=8217"}],"version-history":[{"count":14,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/8217\/revisions"}],"predecessor-version":[{"id":8234,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/8217\/revisions\/8234"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/7246"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=8217"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=8217"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=8217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}