From df3253ade140e27e6aa04dca87def50a574a4b4d Mon Sep 17 00:00:00 2001 From: Jesse Brault Date: Mon, 29 Dec 2025 12:52:11 -0600 Subject: [PATCH] Retain search prompt between navigations. --- .../recipes-search-page/recipes-search-page.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/app/recipes-search-page/recipes-search-page.ts b/src/app/recipes-search-page/recipes-search-page.ts index 7715ffa..ab8c94a 100644 --- a/src/app/recipes-search-page/recipes-search-page.ts +++ b/src/app/recipes-search-page/recipes-search-page.ts @@ -3,6 +3,7 @@ import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angula import { injectQuery } from '@tanstack/angular-query-experimental'; import { RecipeService } from '../service/recipe.service'; import { RecipeCardGrid } from '../recipe-card-grid/recipe-card-grid'; +import { ActivatedRoute, Router } from '@angular/router'; @Component({ selector: 'app-recipes-search-page', @@ -12,6 +13,17 @@ import { RecipeCardGrid } from '../recipe-card-grid/recipe-card-grid'; }) export class RecipesSearchPage { private readonly recipeService = inject(RecipeService); + private readonly router = inject(Router); + private readonly activatedRoute = inject(ActivatedRoute); + + public constructor() { + this.activatedRoute.queryParams.subscribe((queryParams) => { + if (queryParams['prompt']) { + this.givenPrompt.set(queryParams['prompt']); + this.searchRecipesForm.controls.prompt.setValue(queryParams['prompt']); + } + }); + } protected readonly searchRecipesForm = new FormGroup({ prompt: new FormControl('', [Validators.required]), @@ -25,8 +37,11 @@ export class RecipesSearchPage { enabled: () => !!this.givenPrompt(), })); - protected onPromptSubmit() { + protected async onPromptSubmit() { if (this.searchRecipesForm.value.prompt) { + await this.router.navigate(['/recipes-search'], { + queryParams: { prompt: this.searchRecipesForm.value.prompt }, + }); this.givenPrompt.set(this.searchRecipesForm.value.prompt); } }