У меня есть основной компонент, который имеет в нем роутер-выход. В компоненте, который загружен в маршрутизатор-выход, я беру параметр url следующим образом:
ngOnInit(): void {
// _route is injected ActivatedRoute
this._route.params.subscribe((params: Params) => {
if(params['url']){
this.testUrl = params['url'].replace(new RegExp('\%2[fF]', 'g'), '/');
}
});
}
Это отлично работает, но когда я пытаюсь использовать его на компоненте верхнего уровня, объект params всегда пуст. Я не понимаю, почему, поскольку объект params вложенных компонентов имеет данные в нем, и я пытаюсь получить к нему доступ точно так же. Ошибок нет, объект param просто пуст.
Почему мой родительский компонент не получает правильный объект Params из ActivatedRoute?
изменить:
в качестве запрошенного полного родительского компонента
import { OnInit, Component, Directive } from '@angular/core';
import { Router, ActivatedRoute, Params } from '@angular/router';
import { Observable } from 'rxjs/Observable';
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
})
export class AppComponent {
public testUrl: string;
constructor(private router: Router, private _route: ActivatedRoute) {
}
ngOnInit(): void{
this._route.queryParams.subscribe((params: Params) => {
console.log(params);
if (params['url']) {
this.testUrl = params['url'].replace(new RegExp('\%2[fF]', 'g'), '/');
alert(params['url']);
}
});
}
}
код маршрутизатора для app.module.ts:
RouterModule.forRoot([
{ path: '', component: CheckMobileComponent },
{ path: '**', component: CheckMobileComponent }
]),
код маршрутизатора для вложенного модуля:
RouterModule.forChild([
{ path: 'report', component: MobileReportComponent }
Нет прямого маршрута для моего app.component, поскольку он загружается селектором в index.html.