Пытаюсь получить параметр id с помощью nodejs и получить к нему доступ в angular

#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() . Это лучший подход, позволяющий избежать утечек памяти в вашем приложении.