2017-10-10 3 views
0

私は以下のコードを使用してブートストラップ4ドロップダウンメニューを構築するために使用されるサイトへのルートリストを取得するサービスを持っています。角度4 - ルート値がアクセスできない

私が持っている課題は、ルート値をキャプチャして「ホーム」と「詳細」のリンクに挿入する方法を理解できないことです。どんな助けでも大歓迎です!

import { Component, Injectable, OnInit, Pipe, PipeTransform } from '@angular/core'; 
 
import { Http, URLSearchParams } from '@angular/http'; 
 
import { Router, ActivatedRoute, Params } from '@angular/router'; 
 
import { Observable } from 'rxjs/Observable'; 
 
import { sitesService } from '../services/sites.service'; 
 

 
@Component({ 
 
    selector: 'app-header', 
 
    templateUrl: './header.component.html', 
 
    styleUrls: ['./header.component.css'] 
 
}) 
 
export class HeaderComponent implements OnInit { 
 

 
    sites: any; 
 
    filteredsiteTitle = ''; 
 
    selectedsite: { name: string }; 
 
    // selectedsite: any; 
 
    constructor(private sitesService: sitesService, private router: Router, private route: ActivatedRoute) { } 
 

 
    ngOnInit() { 
 
    // All sites 
 
    this.sitesService.getsites().subscribe(
 
     (response) => this.updatesites(response), 
 
     (error) => console.log(error) 
 
    ); 
 
    // Selected site 
 
    this.selectedsite = { 
 
     name: this.route.snapshot.params['name'] 
 
    }; 
 
    this.route.params.subscribe(
 
     (params: Params) => { 
 
      this.selectedsite.name = params['name']; 
 
      console.log(params); 
 
      return this.selectedsite.name; 
 
     } 
 
    ); 
 
    } 
 

 
    updatesites(sitesResponse) { 
 
    this.sites = sitesResponse; 
 
    this.sites = JSON.parse(this.sites._body); 
 
    } 
 

 
} 
 

 
HTML Template code is:
<nav class="navbar navbar-toggleable-md navbar-inverse fixed-top bg-inverse"> 
 
    <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation"> 
 
     <span class="navbar-toggler-icon"></span> 
 
    </button> 
 
    <a class="navbar-brand" href="index.html"> 
 
     <span class="navbar-brand-heavy">DEMO</span><span class="navbar-brand-light">sites</span> {{selectedSite.name}} 
 
    </a> 
 
    <div class="collapse navbar-collapse" id="navbarCollapse" *ngIf="sites"> 
 
     <ul class="navbar-nav mr-auto"> 
 
     <li class="nav-item dropdown"> 
 
      <a class="nav-link dropdown-toggle selectedSite" href="#" id="dropdown01" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{selectedSite.name}}</a> 
 
      <div class="dropdown-menu" aria-labelledby="sites dropdown" id="sitesdropdown"> 
 
      <a class="dropdown-item"> 
 
       <input type="text" class="form-control" [(ngModel)]="filteredSites"> 
 
      </a> 
 
      <a *ngFor="let site of sites" 
 
       class="dropdown-item" 
 
       [routerLink]="['/home', site.Title]" 
 
       > 
 
       {{ site.Title }} 
 
      </a> 
 
      </div> 
 
     </li> 
 
     <li class="nav-item"> 
 
      <a class="nav-link" routerLinkActive="active" [routerLink]="['/home', 'selectedSite']">Home</a> 
 
     </li> 
 
     <li class="nav-item"> 
 
      <a class="nav-link" routerLinkActive="active" [routerLink]="['/details', selectedSite.name]">Details</a> 
 
     </li> 
 
     </ul> 
 
     <form class="form-inline mt-2 mt-md-0"> 
 
     <input class="form-control mr-sm-2" type="text" placeholder="Search"> 
 
     </form> 
 
    </div> 
 
    </nav>

答えて

1

この質問への答えを提供していません this.route.snapshot.paramMap.get('name')

+0

を試してみてください。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 - [レビューの投稿者](レビュー/低品質の投稿/ 17577206) – bob

+0

あなたは何についてあなたがよくわからないのですか?質問は、ルート値をキャプチャする方法です、私の答えはどのように表示されます。 – JohanP

+0

これは機能しません。 ngOnit()が一度だけ実行されるように見えるので、ルート値を取得できないようです。より明確な例を教えてください。 –

関連する問題