Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular Ionic 4-如何将id参数传递到另一个页面并检索id';从外部api获取数据_Angular_Database_Ionic Framework_Routing - Fatal编程技术网

Angular Ionic 4-如何将id参数传递到另一个页面并检索id';从外部api获取数据

Angular Ionic 4-如何将id参数传递到另一个页面并检索id';从外部api获取数据,angular,database,ionic-framework,routing,Angular,Database,Ionic Framework,Routing,事先很抱歉提出这个假问题,但我无法解决这个问题。因此,我有一个来自NodeJSAPI的类别列表。我想根据id从数据库中检索子类别。应用程序正在通过服务与api通信。在数据库端,表“category”和“subcategory”通过“subcategory”表中的外键进行关联。我知道我在api上提出的sql请求是可以的,因为我在postman上进行了测试。 现在的问题是,我检索所有子类别,而不仅仅是那些与我的id相关的子类别 api.service.ts getDataCategories()

事先很抱歉提出这个假问题,但我无法解决这个问题。因此,我有一个来自NodeJSAPI的类别列表。我想根据id从数据库中检索子类别。应用程序正在通过服务与api通信。在数据库端,表“category”和“subcategory”通过“subcategory”表中的外键进行关联。我知道我在api上提出的sql请求是可以的,因为我在postman上进行了测试。 现在的问题是,我检索所有子类别,而不仅仅是那些与我的id相关的子类别

api.service.ts

  getDataCategories(): Observable<any> {
    return this.http.get(categoriesUrl, httpOptions).pipe(
      map(this.extractData),
      catchError(this.handleError));
  }

  getDataSubCategories(): Observable<any> {
    return this.http.get(subCategoriesUrl, httpOptions).pipe(
      map(this.extractData),
      catchError(this.handleError));
  }
categoriesdetailpage.html

<ion-col size="6">
      <ion-list *ngFor="let data of subCategories[0]">
        <ion-item>{{ data.name }}</ion-item>
      </ion-list>
    </ion-col>

谢谢你的帮助

我不太明白你的问题。是否要将ID传递到其他页面,然后使用此ID从数据库检索子类别?如果是这种情况,你可以这样做:

api.service.ts:

  getDataCategories(): Observable<any> {
    return this.http.get(categoriesUrl, httpOptions).pipe(
      map(this.extractData),
      catchError(this.handleError)
    );
  }

  getDataSubCategories(id: string): Observable<any> {
    return this.http.get(subCategoriesUrl + "?id_subcategory=" + id, httpOptions).pipe(
      map(this.extractData),
      catchError(this.handleError)
    );
  }
categoriesdetailpage.ts:

import { Router } from '@angular/router';

export class CategoryDetailPage implements OnInit {

  categoriesdetails:any=[];

  constructor(private router: Router, public api: ApiService, private route: ActivatedRoute) {
    this.state = this.router.getCurrentNavigation().extras.state;
    if (this.state != undefined) {
      this.api.getSubcategories(this.state['id_category']).subscribe(res => {
        this.categoriesdetails= Object.values(res);
        console.log(this.categoriesdetails);   
      });
    }
  }
}

当然,您必须对此代码进行一些更改,但我认为它可以为您指明正确的方向。

谢谢您的回复!这正是我想做的!我试试这个。
  getDataCategories(): Observable<any> {
    return this.http.get(categoriesUrl, httpOptions).pipe(
      map(this.extractData),
      catchError(this.handleError)
    );
  }

  getDataSubCategories(id: string): Observable<any> {
    return this.http.get(subCategoriesUrl + "?id_subcategory=" + id, httpOptions).pipe(
      map(this.extractData),
      catchError(this.handleError)
    );
  }
import { NavigationExtras } from '@angular/router';
import { NavController } from '@ionic/angular';

export class CategoriesPage implements OnInit {

  categories: any=[];
  id:any;

  constructor(public api: ApiService, private route: ActivatedRoute) { }

  ngOnInit() {
    this.api.getDataCategories().subscribe(res=>{
      this.categories= Object.values(res);
      console.log(this.categories);
      return this.categories;
    });
  }

  onSelectedCategory(id: any) {
    let extras: NavigationExtras = {
      state: {
        id_category: id
      }
    };
    this.navController.navigateForward('/categorie-detail-page', extras);
  }
}
import { Router } from '@angular/router';

export class CategoryDetailPage implements OnInit {

  categoriesdetails:any=[];

  constructor(private router: Router, public api: ApiService, private route: ActivatedRoute) {
    this.state = this.router.getCurrentNavigation().extras.state;
    if (this.state != undefined) {
      this.api.getSubcategories(this.state['id_category']).subscribe(res => {
        this.categoriesdetails= Object.values(res);
        console.log(this.categoriesdetails);   
      });
    }
  }
}