Вы можете указать критерий поиска с помощью параметра маршрута .См. этот стек для демонстрации.
- Добавление параметра
search
в маршрут компонента:
{ path: "vehicles/:search", component: VehiclesComponent }
Добавьте соответствующий параметр для каждой ссылки на маршрутизатор:
<a routerLinkActive="active" routerLink="/vehicles/make">Search: make</a> |
<a routerLinkActive="active" routerLink="/vehicles/model">Search: model</a> |
<a routerLinkActive="active" routerLink="/vehicles/price">Search: price</a> |
Получить критерий поиска из активного маршрута:
import { ActivatedRoute } from '@angular/router';
import { Subscription } from "rxjs";
...
export class VehiclesComponent {
search: number;
private subscription: Subscription;
constructor(private route: ActivatedRoute) { }
ngOnInit() {
this.subscription = this.route.params.subscribe(params => {
this.search= params["search"];
});
}
ngOnDestroy() {
this.subscription.unsubscribe();
}
}
Адаптируйте представление к выбранному критерию поиска, например, с помощью директивы
ngSwitch
:
<form>
...
<ng-container [ngSwitch]="search">
<div *ngSwitchCase="'make'">
<div><input type="radio" name="make">Make 1</div>
<div><input type="radio" name="make">Make 2</div>
<div><input type="radio" name="make">Make 3</div>
</div>
<div *ngSwitchCase="'model'">
<select>
<option>Model 1</option>
<option>Model 2</option>
<option>Model 3</option>
</select>
</div>
<div *ngSwitchCase="'price'">
From: <input type="text">
To: <input type="text">
</div>
</ng-container>
<button>Search</button>
</form>
...