поскольку я могу переходить с одного сайта на другой в другой маршрут используя опциональные параметры в url

у меня есть проблема. У меня есть фильтр, что поисков и шага эти параметры поисков в другой вид через параметры в маршруте. проблема, которая у него есть в настоящее время, состоит в том, что у фильтра есть 6 параметров, и - возможно, что одинокий пользователь наполняет 4 из 6 полей формуляра, и когда он это посылает, он дает мне ошибку, потому что в маршруте у меня есть определенный 6 параметров этой формы:

{ path: 'inmuebles/:tipo/:transaccion/:pais/:cuartos/:precio_min/:precio_max',component: VistaInmuebleComponent}

и так он такой, как я осуществляю поставку формуляра в кнопке:

(click)="filtro(formulario.value)" [routerLink]="['/inmuebles',formulario.controls['tipo'].value,formulario.controls['transaccion'].value,formulario.controls['pais'].value,formulario.controls['cuartos'].value,formulario.controls['precio_min'].value,formulario.controls['precio_max'].value]"

Существует какой-то способ помещать параметры "precio_min" и "precio_max" как опционально? что, если пользователь не завершает их равно, смогло посылать себе формуляр? в этом моменте он дает мне ошибку, потому что в маршруте я считаю определенными 6 параметров и посылаю 4, если пользователь не выбирает эти 2. Как он мог бы делать, чтобы это решать? спасибо заранее в того, который может помогать мне.

2
задан 09.08.2019, 22:58
1 ответ

Официальный documentaci¦n углового объясняет, что нужно использовать route parameters, когда они имеются parÃ: не опциональные метры ( documentaci¦n ), когда он занимается с parÃ: опциональные метры рекомендует использовать query parameters. Для этого случая в особенности podr¦, - чтобы помогать следующего способа:

{ path: 'inmuebles/:tipo/:transaccion/:pais/:cuartos', component: VistaInmuebleComponent }

соединил в маршрут:

<a (click)="filtro(formulario.value)"
   [routerLink]="['/inmuebles', formulario.controls['tipo'].value, formulario.controls['transaccion'].value, formulario.controls['pais'].value, formulario.controls['cuartos'].value]"
   [queryParams]="{'precio_min': formulario.controls['precio_min'].value, 'precio_max': formulario.controls['precio_max'].value}">
  ...
</a>

recepci¦n parÃ: метры:

// ...
import { ActivatedRoute } from '@angular/router';

@Component({ ... })
export class VistaInmuebleComponent implements OnInit {
  constructor(private route: ActivatedRoute) { }

  ngOnInit() {
    this.route.queryParams
      .subscribe(params => {
        console.log(params); // {"precio_min": <min>, "precio_max": <max>}
      });
  }
}

Для mÃ: s informaci¦n на query parameters ты можешь проверять этот ссылка .

4
ответ дан 01.12.2019, 22:19
  • 1
    Привет @Jonathan, спасибо за ответ. разместите, такой который, как ты это сделал, но он дает мне ошибку. когда я определяю маршрут, здесь: { path: ' inmuebles/:tipo/:transaccion/:pais/:cuartos' component: VistaInmuebleComponent } не были бы должны идти 6 параметров? разместите это такое, каков и другой код, который ты разместил с queryParams, но он показывает мне ошибку, часть ошибки это говорит: compiler.js:2175 Ункаугт Эррор: Сдержись parse errors: Parser Ошибка: Missing expected] at the end of the expression [[' / inmuebles' formulario.controls [' tipo'] .value, formulario.controls [' transaccion'] .value... – JulianProg 10.08.2019, 19:48
  • 2
    Привет, @JulianProg, прежде всего, как habí в объясненный в ответе, они не могут класться pará опциональные метры маршрута, а именно, pará метры: tipo, transaccion, pais и cuartos - pará установленные метры, которых не может не быть, pará опциональные метры precio_min и precio_max проходят посредством query params, пример сформированного маршрута serí в /inmuebles/<tipo>/<transaccion>/<pais>/<cuartos>?precio_min=<min>&precio_max=<max>. Ошибка, о которой ты упоминаешь,, - потому что ты поместил крючок má s в начало [['/inmue...-> ['/inmue... – Jonathan Quispe 10.08.2019, 21:01
  • 3
    Ok, уже удалось решить другу. Сейчас..., который не идеальное, но который он мог бы использовать, для того, чтобы, перезагрузив страницу или оденьте данные, которые у него были, не теряйтесь и вновь появитесь? он был бы с помещением storage или был бы лучший способ это делать? – JulianProg 13.08.2019, 19:22