#node.js #angular #ionic-framework #parameters
#node.js #angular #ionic-framework #параметры
Вопрос:
Я пытаюсь получить доступ к странице сведений, которая у меня есть для списка элементов в моем html (ionic). Поэтому, когда я нажимаю на 1 элемент, мне нужно перейти на страницу сведений с информацией об этом конкретном элементе. Я использую базу данных mongo для элементов, модель элементов: название и ингредиенты.
Я застрял здесь и не знаю, что делать, пожалуйста, помогите, если у вас есть немного времени, спасибо.
Мой код :
<ion-list *ngFor="let recipe of recipes ; let i = index">
<ion-item>
<ion-label>{{recipe.name}}</ion-label>
</ion-item>
</ion-list>
Запрос к базе данных, пытающийся получить идентификатор для доступа к элементу (я получаю
public findByName(id: string) {
return this.http.get<any>(
"http://localhost:9020/:id" id
);
}
Это то, что я пробовал в typescript
this.route.paramMap.subscribe((paramMap) => {
if (!paramMap.has("id")) {
this.navCtrl.navigateBack("/home");
return;
}
this._recipeDetail = this.nutService
.findByName(paramMap.get("id"))
.subscribe((id) => {
this.id = id;
});
});
Также в модуле route :
{
path: "name/:id",
loadChildren: () =>
import("./r-d/r-d.module").then(
(m) => m.RDPageModule
),
},
Но это не работает, может быть, у меня неправильный подход? Может кто-нибудь, пожалуйста, подсказать мне немного?
Спасибо за ваше время
Комментарии:
1. » localhost:9020/:id » id =>
http://localhost:9020/${id}
2. В Angular ваш URL-адрес должен быть:
'http://localhost:9020/' id
Ответ №1:
this._recipeDetail = this.nutService
.findByName(paramMap.get("id"))
.subscribe((id) => {
this.id = id;
});
Вы должны ожидать, что ваш api вернет вам recipeDetail.. вы не сохраняете его должным образом.
this.nutService.findByName(paramMap.get("id"))
.toPromise().then((data) => {
this.recipeDetail = data;
});
И затем вы можете отобразить свой recipeDetail внутри своего шаблона. Я также изменился .subscribe()
на .toPromise().then()
. Это лучший подход, позволяющий избежать утечек памяти в вашем приложении.