угловая 5 маршрутизация на том же компоненте не работает - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь перенаправить тот же путь во второй раз, но он не вызывает ngOnInit () для загрузки новых данных в тот же компонент.

app.routing.module.ts:

const routes: Routes = [
  {path: '', component: mycomponet}
  {path: 'name', component: nameComponent}
]
@NGModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})

app.service.ts : где размещена моя логика маршрутизации, и я пытаюсь снова перейти на nameComponent

let newData = []
nextClick(data) {    
  let condition = true;
  let newData = [];
  if(condition == true) {
    this.router.naviagete(['app-name/name'])
  }
  return this.newData
}

name.component.ts

ngOnInit() {
  console.log(this.appService.nextClick())
}

здесь мой name.component ngOnInit(), вызывающий в первый раз, но когда я снова пытаюсь направить тот же путь, он не вызывается.как перемещаться по одному и тому же пути с разными данными (newData)?

Ответы [ 3 ]

0 голосов
/ 26 февраля 2019

Если вы хотите просто перезагрузить свой компонент по тому же URL-адресу, вы должны использовать дополнительные опции для вашего RouterModule и использовать onSameUrlNavigation: 'reload' https://angular.io/api/router/ExtraOptions#onSameUrlNavigation

0 голосов
/ 26 февраля 2019

Из того, что я понимаю, я думаю, что вы пытаетесь создать некоторую логику в службе приложения и вернуть некоторые данные после использования этой логики обратно в ваш компонент.Для этого вам нужно сделать следующее ..

Определить newData в вашем name.component.ts и сделать это:

this.appService.nextClick(oldData).subscribe((data) => {
   this.newData = data;
   console.log(this.newData) //to view it in the console if you are trying to do that
},
(error) => {
     //console.error("Error");
});

И в app.serviceпросто сделай это:

public newData: any[];
nextClick(oldData){ 
    // do something with oldData like oldData = oldData - 1;   
    this.newData = oldData;
    let condition = true;
    if(condition == true){
      return this.newData;
    }
  }
0 голосов
/ 26 февраля 2019

Если вы остаетесь на том же пути, к которому пытаетесь направить, Angular router не будет повторно инициализировать компонент.Он поймет, что запрашиваемый путь совпадает с текущим.Следовательно, никакой маршрутизации не происходит.Вы можете использовать наблюдаемое в сервисе и передавать данные компоненту, если вам нужно отправить другие данные.

См. Эту ссылку для примеров

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...