Abonnez-vous à la fois la route params et queryParams Angulaire 2

J'ai mis en place les éléments suivants système de routage

export const MyRoutes: Routes = [
    {path: '', redirectTo: 'new', pathMatch: 'full'},
    {path: ':type', component: MyComponent}
];

et système de navigation

goToPage('new');
goToPageNo('new', 2);

goToPage(type) {
    this.router.navigate([type]);
}
goToPageNo(type, pageNo) {
    this.router.navigate([type], {queryParams: {page: pageNo}});
}

Échantillon URL ressemble à ceci

http://localhost:3000/new

http://localhost:3000/new?page=2

http://localhost:3000/updated

http://localhost:3000/updated?page=5

Parfois, ils ont facultatif queryParams (page)

Maintenant, j'ai besoin de lire les deux paramètre de route et queryParams

ngOnInit(): void {
    this.paramsSubscription = this.route.params.subscribe((param: any) => {
        this.type = param['type'];
        this.querySubscription = this.route.queryParams.subscribe((queryParam: any) => {
            this.page = queryParam['page'];
            if (this.page)
                this.goToPageNo(this.type, this.page);
            else
                this.goToPage(this.type);
        });
    });
}

ngOnDestroy(): void {
    this.paramsSubscription.unsubscribe();
    this.querySubscription.unsubscribe();
}

Maintenant, cela ne fonctionne pas comme prévu, en visitant les pages sans queryParams fonctionne, puis je visite une page avec queryParams "goToPageNo" est appelée plusieurs fois, comme je m'abonne queryParams à l'intérieur de la route params.

J'ai regardé à l'angle de 2 documentation, ils n'ont pas d'exemple ou les codes d'un abonnement à deux paramètre de route et queryParams est mis en œuvre en même temps.

Toute façon de le faire correctement? Des suggestions?

InformationsquelleAutor Shifatul | 2016-11-19