Элемент paramMap всегда возвращает ноль, используя Angular 8 маршрутизацию - PullRequest
0 голосов
/ 22 января 2020

Я использую Angular 8, чтобы получить некоторые параметры или данные из маршрута, но он всегда пуст. Мой компонент находится внутри загруженного модуля с именем 'message'.

app-routing.module.ts:

...

{
  path: 'message',
  loadChildren: () =>
    import('./systems/message/message.module').then(
      m => m.MessageModule
    )
},

...

message-routing.module. ts:

...

const routes: Routes = [
  {
    path: '',
    component: MessageIndexComponent,
    children: [{ path: ':folder', component: ComponentMessageListComponent }]
  },
  { path: 'add', component: MessageAddComponent },
  { path: 'list', component: MessageIndexComponent }
];

...

component-message-list.component.ts:

...

constructor(
  private route: ActivatedRoute
) {}

ngOnInit() {
  console.log(this.route.snapshot.paramMap.get('folder'));
   // Change list on date change
  this.route.paramMap.subscribe(params => {
    console.log(params.get('folder'));
  });
}

...

Обе консоли возвращают NULL при маршрутизации на этот адрес:

/ message / inbox

ОБНОВЛЕНИЕ:

Я направляюсь к маршруту, записывая адрес непосредственно в браузер:

http://127.0.0.1: 4200 / message / inbox

или с помощью тега привязки

message -index.component. html

...

  <a class="list-group-item list-group-item-action d-flex p-3" routerLink="inbox" routerLinkActive="active">
    Inbox
  </a>
...

И всегда параметр равен нулю

1 Ответ

0 голосов
/ 22 января 2020

Мне нужно было получить параметры firstChild, а не родитель. Код предварительного просмотра возвращал параметры родительского элемента.

Этот код работает:

this.route.firstChild.paramMap.subscribe(params => {
    console.log(params.get('folder'));
  });

ОБНОВЛЕНИЕ: Проблема заключалась в том, что я забыл заменить тег дочернего компонента в родительском элементе с параметром router-outlet, затем дочерний компонент вставлялся в родительский элемент без маршрутизатора!

Спасибо всем

...