Как передавать данные с одной страницы на другую для навигации в Ionic 2

Я новичок в Ionic 2. Я хочу передавать данные Json с одной страницы на другую после того, как я нажимаю на элементы списка. Элементы в списке исходят из json и имеют определенные идентификаторы, связанные с каждым элементом. Итак, я хочу передать определенный идентификатор после события щелчка по определенному элементу.

Это ссылка json:

1. http://factoryunlock.in//products с помощью по этой ссылке я покажу продукт в списке

введите здесь описание изображения

2. Теперь я хочу показать детали этого конкретного элемента. Поэтому я использую эту ссылку

http://factoryunlock.in/products/1

Я хочу изменить этот идентификатор (в ссылке 2 products/1) после события щелчка по определенному элементу.

Это мой код просмотра списка (Second.ts).

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { EarthquakesProvider } from '../../providers/earthquakes/earthquakes';
import { DetailsPage } from '../details/details';
import { ChartsPage } from '../charts/charts';


@IonicPage()
@Component({
  selector: 'page-second',
  templateUrl: 'second.html',
  providers: [EarthquakesProvider]
})
export class SecondPage {

    public DateList: Array<Object>;

    constructor(public _navCtrl: NavController,
        public _earthquakes: EarthquakesProvider) {

       this.getEarthquakes();

    }
    public Listitem(l) {
        this._navCtrl.push(DetailsPage
            );

    }

    public openModal() {
        this._navCtrl.push(ChartsPage);

    }
    getEarthquakes() {
        this._earthquakes.loadEarthquakess().subscribe(res => {
            this.DateList = res.data;

        });
    }

 }

Это мой контроллер провайдера:

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';

@Injectable()
export class EarthquakesProvider {

    constructor(public _http: Http) {
        console.log('Hello Earthquakes Provider');
    }


    loadEarthquakess() {
        return this._http.get('http://factoryunlock.in/sundar/public/api/v1/products')
            .map(res => res.json());
    }

    loadEarthquakesdetails() {
        return this._http.get('http://factoryunlock.in/sundar/public/api/v1/products/1')
            .map(res => res.json());
    }

Это мой код details.ts

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { EarthquakesProvider } from '../../providers/earthquakes/earthquakes';


@IonicPage()
@Component({
  selector: 'page-details',
  templateUrl: 'details.html',
  providers: [EarthquakesProvider]
})
export class DetailsPage {

    public DateList: Array<Object>;

    item: any;
    constructor(public _navCtrl: NavController, public _earthquakes: EarthquakesProvider) {


        this.getEarthquakes();

    }

    getEarthquakes() {
        this._earthquakes.loadEarthquakesdetails().subscribe(res => {
            this.DateList = res.data;
            console.log(res.data);
        });
    }

 }

Это мой снимок просмотра сведений

введите здесь описание изображения


person Harshal Deshmukh    schedule 19.07.2017    source источник
comment
Вы хотите сделать его динамичным, верно?   -  person Swapnil Patwa    schedule 19.07.2017
comment
да, я хочу сделать его динамичным   -  person Harshal Deshmukh    schedule 19.07.2017


Ответы (2)


Страница просмотра списка

 public Listitem(id) {
    this._navCtrl.push(DetailsPage, {id: id}); 
 }

Контроллер поставщика:

 loadEarthquakesdetails(id) {
        return this._http.get(`http://factoryunlock.in/sundar/public/api/v1/products/${id}`)
            .map(res => res.json());
    }

Код Details.ts

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { EarthquakesProvider } from '../../providers/earthquakes/earthquakes';


@IonicPage()
@Component({
  selector: 'page-details',
  templateUrl: 'details.html',
  providers: [EarthquakesProvider]
})
export class DetailsPage {

    public DateList: Array<Object>;

    item: any;
     id: number;
    constructor(public _navCtrl: NavController, public _earthquakes: EarthquakesProvider, public navParams: NavParams) {

         this.id = navParams.get('id');


    }
    ionViewDidLoad() {
        this.getEarthquakes(this.id);
}
    getEarthquakes(id) {
        this._earthquakes.loadEarthquakesdetails(id).subscribe(res => {
            this.DateList = res.data;
            console.log(res.data);
        });
    }

 }
person Swapnil Patwa    schedule 19.07.2017
comment
сэр, в HTML, как я могу использовать этот идентификатор ‹ion-list› ‹button ion-item *ngFor=let item of DateList (click)=Listitem(l) › {{ item.product }} ‹ion-item style=width: 50% › ‹img [src]=item.images /› ‹/ion-item› ‹/button› @Swapnil Patwa sir - person Harshal Deshmukh; 19.07.2017
comment
Поскольку вы новичок, помните, что строка внутри this._http.get() находится не в одинарной кавычке, а в ` (кнопка ниже esc). - person Swapnil Patwa; 19.07.2017

Вы можете использовать это в своем

Контроллер провайдера

loadEarthquakesdetails(id) {
    return this._http.get(`http://factoryunlock.in/sundar/public/api/v1/products/'+'id')
        .map(res => res.json());
}

Эта работа для меня.

person rahul patel    schedule 16.08.2017