Angular 7 полностью перезагружен по тому же URL

#angular #angular-routing

#angular #angular-маршрутизация

Вопрос:

У меня есть этот код :

 onSubmit(search: string, from: string, to: string) {
        this.router.navigate(['/recherche'], {
          queryParams: {
            search: search,
            from: from,
            to: to
          }
        });
      }
  

И этот вид :

        <form ngNoForm>
          <div class="row">
            <div class="col-11">
              <input #search id="search" name="search" class="form-control form-control-lg w-100" type="text" />
            </div>
            <div class="col-1">
              <button (click)="onSubmit(search.value, from.value, to.value);" class="btn btn-lg btn-black" type="submit"><i class="fa fa-search"></i></button>
            </div>
          </div>
  

Вот как я получаю параметры на странице результатов :

     constructor(
        private route: ActivatedRoute,
        private eventService: EventService,
        private locationService: LocationService,
      ) {});
      }

  ngOnInit() {
    // Subscribe to query parameters
    this.route.queryParamMap.subscribe(queryParams => {
      // Retreive the parameters
      let search = queryParams.get('search').trim();
      let from = queryParams.get('from');
      let to = queryParams.get('to');

      // List the events
      this.listEvents(search, from, to);

      // List the locations
      this.listLocations(search);
    });
  }
  

При первом поиске все идет хорошо. Если я выполнил второй поиск, приложение полностью перезагружено. Чего мне не хватает?

Часть кода модуля маршрутизации :

 { 
    path: 'recherche',
    component: SearchComponent
  },
  

Чтобы быть более точным, приложение перезагружается только тогда, когда я нахожусь на /recherche пути. Если я перейду на другой маршрутизатор, прежде чем выполнять второй поиск, это сработает.

Комментарии:

1. возможно, это неверный маршрут? это должно быть path: 'recherche/:search/:from/:to' , :search :from , :to , : может быть что угодно, главное, чтобы они начинались с, это также то, как вы получаете данные на этой странице

2. @mast3rd3mon : О, ну, параметры запроса не могут быть просто скрытыми параметрами? Должны ли они быть явно указаны в пути? Я не понял этого, читая документацию…

3. использование параметров запроса создаст URL-подобный запросу, такой как ` myweb.com/recherche?search=val1amp;from=val2amp;to=val3

4. @mast3rd3mon : Я добавил код, который вы запрашиваете.

5. Вы не используете форму angular, поэтому, я думаю, именно поэтому страница перезагружается при отправке.