Я извлекаю данные из данных json: https://jsonplaceholder.typicode.com/posts, и я хочу показать подробности каждого сообщения при нажатии на кнопку на другой странице, чтобы отобразить эти сведения: https://jsonplaceholder.typicode.com/posts/3
я создалпоставщик и использование данных и все работает для домашней страницы, но я получил ошибку при передаче идентификатора сообщения в метод, который ищет сообщение по идентификатору!
поставщик:
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { URLS } from '../urls/postUrls'
@Injectable()
export class PostsProvider {
constructor(public http: HttpClient) {
}
getPosts(){
return new Promise(resolve => {
this.http.get(URLS.POSTS).subscribe(data => {
resolve(data);
}, err =>{
console.log(err);
});
});
}
getPostByID(id){
for (let i = 0; i < this.getPosts.length; i++) {
if (this.getPosts[i].id == id) {
return Promise.resolve(this.getPosts[i]);
}
}
}
}
home.ts
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { PostsProvider } from '../../providers/posts/posts';
import { PostPage } from '../post/post'
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
posts: any;
constructor(public navCtrl: NavController, public postsProvider: PostsProvider) {
this.getPosts();
}
getPosts() {
this.postsProvider.getPosts()
.then(data => {
this.posts = data;
});
}
postDetails(id){
this.navCtrl.push(PostPage, { id: id });
}
}
home.html
<ion-content >
<ion-card *ngFor="let post of posts">
<img src="https://placekitten.com/760/300"/>
<ion-card-content>
<ion-card-title class="post-title">
{{ post.title }}
</ion-card-title>
<p class="post-content">
{{ post.body | slice:0:80}} ...
</p>
<button ion-button button-small read-more (click)="postDetails(post.id);">Read more</button>
</ion-card-content>
</ion-card>
</ion-content>
post.ts
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { PostsProvider } from '../../providers/posts/posts';
@IonicPage()
@Component({
selector: 'page-post',
templateUrl: 'post.html',
})
export class PostPage {
post: any=0;
constructor(public navCtrl: NavController, public navParams: NavParams, public postsProvider: PostsProvider) {
this.postsProvider.getPostByID(this.navParams.get('id')).then( result => {
this.post = result;
});
}
ionViewDidLoad() {
console.log('ionViewDidLoad PostPage');
}
}
post.html
<ion-content padding *ngIf= "post != 0">
<p>{{ post.title }}</p>
<strong> {{ post.body}} </strong>
Я не нашелправильный способ передать параметры, чтобы получить страницу с подробностями поста!Может ли кто-нибудь проверить, что происходит с параметром id?
Я получил эту ошибку:
Ошибка: ошибка (в обещании): TypeError: Невозможно прочитать свойство 'id' из неопределенного