2017-01-16 14 views

答えて

20

あなたは、ルータが唯一、それは別のルートに移動する部品を破壊し、再作成ActivatedRouteを注入し、params

constructor(route:ActivatedRoute) { 
    route.params.subscribe(val => { 
    // put the code from `ngOnInit` here 
    }); 
} 

を購読することができます。ルートパラメータまたはクエリパラメータのみが更新されてもルートは同じですが、コンポーネントは破棄されずに再作成されません。

強制的にコンポーネントを再作成する別の方法は、カスタム再利用戦略を使用することです。またAngular2 router 2.0.0 not reloading components when same url loaded with different parameters?を参照してくださいインスタンスが作成されたときに一度だけ呼び出されます

+1

Thx、素晴らしい解決策。そして、私はきれいだと思う。 – AntiCZ

1

NgOnInit(それを実装する方法はまだ利用でき、多くの情報をがあるように思えません)。同じインスタンスの場合NgOnInitは再度呼び出されません。それを呼び出すには、作成されたインスタンスを破棄する必要があります。

0

ngOnInitのコードをngAfterViewInitに移動することを検討してください。 後者はルータのナビゲーションで呼び出されたようで、この場合はお手伝いをしてください。

+1

それは本当に起こらない – nadav

6

ルーターでreuseStrategyを調整できます。

constructor(private router: Router) { 
    // override the route reuse strategy 
    this.router.routeReuseStrategy.shouldReuseRoute = function() { 
     return false; 
    }; 
} 
関連する問題