2017-06-16 1 views
6

J'ai l'application Angular 4 SPA en utilisant un routeur angulaire. Je veux avoir un lien hypertexte qui ouvre un composant dans une nouvelle boîte de dialogue en utilisant Bootstrap 4. Je sais déjà comment ouvrir une boîte de dialogue modale à partir d'une fonction.Routeur angulaire 4 et boîte de dialogue modale

Mais comment l'ouvrir en utilisant un lien hypertexte? Je veux laisser mon composant actuel dans et juste montrer le dialogue modal devant lui.

Une autre question - est-ce possible de le faire par programmation? Alors que je peux

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

et le dialogue modal de connexion est affiché sur le composant actuel?

Des suggestions?

Répondre

6

Ma meilleure estimation est que vous pouvez vous abonner à l'itinéraire activé et modifier les paramètres de l'itinéraire pour déclencher le modal.

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 
      } 
     }); 
    } 
} 

Je crois que vous auriez alors un lien qui ressemblait quelque chose comme ceci: <a [routerLink]="['/yourroute', {modal: 'true'}]">

meilleurs exemples peuvent être trouvés ici: Route Blog

+0

Merci pour la suggestion. Quel composant sera mappé à "/ yourroute"? Sera-ce Cmpl? – Sergey

+0

On dirait que vous voulez vraiment changer les paramètres de l'itinéraire au lieu de l'itinéraire lui-même ... Je ne l'ai pas fait auparavant, mais vous pouvez regarder ce [link] (https://stackoverflow.com/questions/40283562/ how-to-change-only-params-of-route-in-angular2) – birwin