2016-07-20 2 views
1

beta2からRC4へのangular2のバージョンを更新したので、私はRC4ルーターの動作に問題があります。 私はsystemjs構成で、次のしている:RC4でのルートナビゲーションの問題

var ngVer = '@2.0.0-rc.4'; 
var routerVer = '@3.0.0-beta.1'; 

方法はhome.component HTMLの一部であり、同じ構成要素にルータのナビゲーションを呼び出すんどのもう一度ボタン負荷に接続されています。 angular2の最近のアップグレードでは、同じコンポーネントのngOnInitは、コンポーネントのインスタンス化中に既に呼び出されている場合は呼び出されません。

をルーティングした後、同じコンポーネントを再度インスタンス化すると、アプリケーション内のビジネスロジックがサポートされます。

app.routes.ts

import { provideRouter, RouterConfig } from '@angular/router'; 
import { HomeComponent } from './home.component'; 

const routes: RouterConfig = [ 
    { 
    path: '', 
    redirectTo: '/home', 
    pathMatch: 'full' 
    }, 
    { 
    path: 'home', 
    component: HomeComponent 
    } 
]; 

export const appRouterProviders = [ 
    provideRouter(routes) 
]; 

home.component.ts:

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

@Component({ 
    selector: 'my-home', 
    templateUrl: 'app/home.component.html' 
}) 
export class HomeComponent implements OnInit { 

    constructor(
    private router: Router) { 
    } 

    ngOnInit() { 
    console.log('in ngOnInit'); 
    } 

    loadAgain(text:string) { 
    this.router.navigate(['/home']); 
    } 
} 

home.component.html:

<div class="grid grid-pad"> 
    <div (click)="loadAgain()" class="col-1-4"> 
     <button style="cursor:pointer; ">Load Again</button> 
    </div> 
</div> 

のEvメソッドが実行され、router navigateが呼び出されても、homeComponentへのルーティングは行われません。 私は、初期化されたコンポーネントを壊すことはできません。これは2.0.0.beta1では動作していましたが、RC4では動作しませんでした。 誰もがこのような状況に遭遇しましたか?

+0

すでに利用可能なルータのベータ2があります。 –

+0

空のコンポーネント(空白のHTML)にナビゲートしてから、そこから回避策としてホームに戻ってみてください。 –

+0

@ArpitAgarwal、私はそれを試みました。それは動作しません。 –

答えて

0

現在のルータコンポーネントでは、パスが変更されない場合や、パラメータ値のみが変更された場合に再利用されます。これは、以前のルータバージョンでオプトインされましたが、「デフォルト」の動作であり、現在オプトアウトはありません。いくつかの議論では未解決の問題がありますが、まだそれが実現するかどうかは不明です。

https://github.com/angular/angular/issues/9811