#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, поэтому, я думаю, именно поэтому страница перезагружается при отправке.