2016-05-26 15 views
2

私は、製品の構成要素を持っており、URL beow訪問することは製品のリストが表示されます。Angular2 RC1 - コンポーネントが呼び出されるたびに起動されるイベントはどれですか?

/products 

、ユーザーがページの最後に示した次/前のリンクをクリックすることができますので、製品ページには、その中に改ページがあります。最初のページで[次へ]をクリックすると、以下のURLにユーザーを移動します

/products/2 

私のコンポーネントでは、私は現在の我々のページに基づいて、製品のリストを取得したngOnInitを実装しています。

私はCanReuseフックを使って動作させていました。しかし、現在のバージョンでは、次のページをクリックするとngOnInitがページ2で呼び出されないので、製品リストを取得できません。

私はCanReuseが今後のアップデートで追加されると読んでいますが、これを達成するためのより良い方法があるのでしょうか?

+0

私はドキュメントを確認した、としていangular2追いついたが、これらは以下のとおりです。 'のOnInit = 0、 OnDestroy = 1、 DoCheck = 2、 OnChanges = 3、 AfterContentInit = 4、 AfterContentChecked = 5、 AfterViewInit = 6、 AfterViewChecked = 7、 ' 多分あなたを助けることができます。 – Koronos

+0

ご返信ありがとうございます。しかし、私たちが製品/ 2から製品/ –

答えて

1

Routerを注入して、changesEventEmitterを購読可能なコンポーネントに使用することができます。

次に、location.path()を使用して、現在のパスをたとえばswitch caseで読み取ることができます。このような何か:

... 
constructor(private _location:Location, private _router:Router) { 
    _router.changes.subscribe(() => { 
     switch(this._location.path()){ 
      case '/products': 
       // do some stuff... 
       break; 
      case '/products/2': 
       // do something different... 
       break; 
      default: 
       // do nothing.. 
     } 
    }); 
+0

ありがとうレキシス、それは働いた:) –

+0

あなたは大歓迎です:) – lexith

0

免責事項:私の英語はかなり悪いです。あなたはthirth oを二回入力したとき

私はいくつかのテストとトリガーされるイベントを行いますが、このようにそれを実装することができAfterViewInit

です:

import {Component,AfterViewInit } from '@angular/core'; 

import {DataTableComponent} from '../../../shared/data-table/datatable.component.ts'; 

@Component({ 
    template: require('./consultorios-list.component.html'), 
    styles: [require('./consultorios-list.component.scss')], 
    directives: [DataTableComponent] 
}) 

export class ConsultoriosListComponent implements OnInit { 
    private datos:any = { 
     titles: null, data: null 
    }; 

    ngAfterViewInit(){ 
     console.log('I was printed when you enter to this route is showed c:'); 
    } 
    constructor() { 

    } 
} 

は私の友人をお楽しみください。

+0

にあなたの努力のためにKoronosありがとう、ありがたいことにそれを解決しない問題を解決します。次のページにテンプレートへのリンクを追加してください。例えば私の場合、私はNext Pageがあり、それが動作するかどうかを確認します。私の場合、次のページ、つまり/ products/2にアクセスすると、ngOnInitとngAfterViewInitのどちらも呼び出されません –

+0

あなたの構造はどのようになっていますか? – Koronos

関連する問題