2017-02-12 3 views
1

私はSOのソリューションを探していましたが、まだこの問題は解決していません。ユーザーが<a>をクリックすると、コンポーネントWrapPostに移動し、WrapPostに情報を表示します。しかし、ユーザが<a>を2回クリックすると、何も起こらない。 routerLinkのマルチクリックをアクティブにする方法とWrapPostが毎回更新されますか?角2ルータのユーザーが再度クリックするリロード

コンポーネント検索

<div class="formShell"> 
    <a class="aSearch" [routerLink]="['/search']" 
     [queryParams]="{category: selectedCategory, search: searchForm.value}"> 
    <input class="searchForm" placeholder="..." #searchForm> 
</div> 

ルート

const appRoutes: Routes = [ 
    { path: '', component: Home }, 
    { path: 'search', component: WrapPost}, 
    { path: 'login', component: Login }, 
    { path: '**', component: Error } 
]; 
+3

[2角度 - routerLinkが再びクリックされたときにコンポーネントを再読み込み]の可能な重複(http://stackoverflow.com/questions/37645368/angular-2-reload-component-when-routerlink-clicked-again) –

答えて

2

あなたがデータにリンクをクリックするたびにリフレッシュしたいわけ。

実際には、サービスでデータをデカップリングし、リンクをクリックするときに呼び出される関数を作成して(データを取得するためにサービスを使用する)作成できます。このような何か:

<a role="button" (click)="reloadData()"></a> 

それとも、その役割は唯一、検索ルートにリダイレクトすることですリダイレクトコンポーネントを作成することができます。このようなもの。

import {Component, OnInit} from "@angular/core"; 
import {Router} from "@angular/router"; 

@Component({ 
    selector: 'redirect', 
    template: '' 
}) 
export class RedirectComponent implements OnInit { 

    constructor(private router: Router) { 
    } 

    ngOnInit() { 
     this.router.navigate(['/search']); 
    } 

} 

とルート

const appRoutes: Routes = [ 
    // other routes 
    { path: 'redirect', component: RedirectComponent}, 
]; 

を追加し、リンクは最初の提案が第二の回避策ソリューションよりもはるかに優れています。この<a routerLink="/redirect"></a>

のようになります。

+0

おかげさまで私は問題を解決します。 – Lestoroer

0

私は問題の修正をコンポーネントErrorに解決し、path '**'を返し、コンポーネントのWrapPostにsetTimeoutを返します。

これを見てくださいskipLocationChangeそれは歴史(実際に必要なパラメータ)を保存しません。

おかげでこのポストAngular 2 - Reload component when routerLink clicked again特にjigar gala

HTML

<a class="aSearch" (click)="changeRoute('/search', searchForm.value)"></a> 

コンポーネント検索

changeRoute(routeValue, searchForm) { 
    this.router.navigate(['**'], {skipLocationChange: true}); 
    setTimeout(function(){ 
     this.router.navigate([routeValue], 
      {queryParams: {category: this.selectedCategory, search: searchForm}} 
     ); 
    }.bind(this)); 

} 
0

すみませんが、私は英語を話すことはありません。

だから私はコードしか話しません。

reload(link:string){ 
    this._router.navigate(['/'], {skipLocationChange: true}) 
     .then(() => { this._router.navigate([link]); }); 
} 
関連する問題