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>
を試してみてください。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 - [レビューの投稿者](レビュー/低品質の投稿/ 17577206) – bob
あなたは何についてあなたがよくわからないのですか?質問は、ルート値をキャプチャする方法です、私の答えはどのように表示されます。 – JohanP
これは機能しません。 ngOnit()が一度だけ実行されるように見えるので、ルート値を取得できないようです。より明確な例を教えてください。 –