2017-03-02 4 views
2

Ich würde gerne lesen, optionale URL-Parameter, egal Abfrage oder Matrix-Parameter, in der Komponente durch Angular, dies während/in ngOnInit() bootstrapped.Lesen URL (Matrix || Abfrage) Parameter in Angular (2) bootstrapped Komponente

Soweit ich verstanden "ActivatedRoute" ist in einer Komponente nicht verfügbar nicht in der Auslasswandung geladen, so wie mit einem index.html:

<body> 
    <app-root>Loading...</app-root> 
</body> 

und app.module.ts Datei enthält:

bootstrap: [AppComponent] 

, ob und wie wäre es möglich sein, von dh http://localhost:4200/my-component/id;param1=abc einen Parameter zugreifen?

@Component({ 
    selector: 'app-root', 
    template: '<router-outlet></router-outlet>', 
    styles: [] 
}) 
export class AppComponent implements OnInit { 

    constructor(private router: Router) { 
    ... ? 
    } 

    ngOnInit(): void { 
    ... ? 
    } 
} 

Antwort

0
import { Component, OnDestroy, OnInit } from '@angular/core'; 
import { Router, ActivatedRoute, Params } from '@angular/router'; 
import { Subscription } from 'rxjs/Subscription'; 

export class AppComponent implements OnInit, OnDestroy { 
    private var1: string; 
    private var2: string; 
    private sub: Subscription; 

    constructor(
    private route: ActivatedRoute, 
    private router: Router 
) {} 

    ngOnInit() { 
    // assign the subscription to a variable so we can unsubscribe to prevent memory leaks 
    this.sub = this.route.queryParams.subscribe((params: Params) => { 
     this.var1 = params['var1']; 
     this.var2 = params['var2']; 
    }); 

    console.log(this.var1, this.var2); 
    } 

    ngOnDestroy() { 
    this.sub.unsubscribe(); 
    } 
... 
} 
+0

Dies funktioniert nicht mit Matrix-URLs – BenRacicot

-1

Hinsichtlich Angular 2 - How to pass URL parameters? die bereitgestellte Lösung nicht für meine Herkunft Problem nicht funktioniert, aber Angular Route guards ist die richtige Funktion einen Blick zu haben.

Mit Routenwächtern können Sie Routeninformationen vor der Komponentenverarbeitung abfangen und erfassen.