2017-06-16 10 views
6

角度ルータを使用する角度4 SPAアプリケーションがあります。 ブートストラップ4を使用して新しいダイアログボックスでコンポーネントを開くハイパーリンクが必要です。私はすでに関数からモーダルダイアログを開く方法を知っています。角度4ルータとモーダルダイアログ

しかし、ハイパーリンクを使って開くにはどうすればいいですか?

<a [routerLink]="['/login']">Login</a> 

現在のコンポーネントをそのまま残し、その前にモーダルダイアログを表示したいと考えています。

もう1つの質問 - それをプログラムで行うことは可能でしょうか?だから私は可能です

this.router.navigate(['/login']); 

現在のコンポーネントには、ログインモーダルダイアログが表示されますか?

提案がありますか?

答えて

6

私は最善の推測では、アクティブなルートを購読し、ルート内のパラメータを変更してモーダルをトリガーすることができます。

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

@Component({ 
    selector: 'cmp1', 
    templateUrl: './cmp1.component.html', 
    styleUrls: ['./cmp1.component.css'], 
}) 
export class Cmp1 implements OnInit { 

    constructor(private activatedRoute: ActivatedRoute) { 
    } 

    ngOnInit() { 
     this.activatedRoute.params.subscribe(params => { 
      if (params["modal"] == 'true') { 
       // Launch Modal here 
      } 
     }); 
    } 
} 

私はあなたがこのような何かを見てリンクを持っていると信じて: <a [routerLink]="['/yourroute', {modal: 'true'}]">

良い例がここで見つけることがあります:Route Blog

+0

は提案をいただき、ありがとうございます。どのコンポーネントが "/ yourroute"にマップされますか?それはCmplですか? – Sergey

+0

あなたは実際にルート自体ではなくルートパラメータを変更したいと思うように聞こえます...私はそれを前にしていませんが、この[リンク]を見ることができます(https://stackoverflow.com/questions/40283562/どのように変更するだけですか?-param-of-route-in-angular2) – birwin