У меня есть json массив , который я собираю из вызова REST API, выглядит следующим образом:
[
{"id":1,"title":"Title One","author":"Auth One"},
{"id":2,"title":"Title Two","author":"Auth Two"},
{"id":3,"title":"Another Title","author":"Another author"}
]
Я создал класс posts.model.ts для представления того, из чего состоит сообщение:
export class Post {
id: Number;
title: string;
author: string;
}
Мой view-component.component. html (я знаю ужасное имя, извините) выглядит следующим образом:
<p>
Post ID:<br>
<input type="text" [(ngModel)]="id">
</p>
<p>
<button (click)="search()">Search</button>
</p>
<div *ngIf="PostList">
<div *ngFor="let post of PostList">
Post ID: {{post.id}}<br>
Post Title: {{post.title}}<br>
Post Author: {{post.author}}
<hr>
</div>
</div>
и мой view-component.component.ts вот так
import { Component, OnInit, Input } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Post } from './post.model';
@Component({
selector: 'app-view-component',
templateUrl: './view-component.component.html',
styleUrls: ['./view-component.component.css']
})
export class ViewComponentComponent implements OnInit {
@Input('post') post: Post;
id: string = "";
PostList: any = [];
constructor(private http: HttpClient) { }
ngOnInit(): void { }
search() {
this.http.get('http://localhost:3000/posts/' + this.id)
.subscribe((data: {}) => {
this.PostList = data;
console.log("This is what I got back = " + JSON.stringify(data));
})
}
}
Что я заметил, так это то, что когда я нажимаю кнопку с пустым полем ввода (Я хочу, чтобы все сообщения были возвращены (это работает, как и ожидалось, и я получаю полный список всех сообщений)).
Однако, когда я ввожу, например, число «2» в поле ввода и нажму кнопку, я ожидаю увидеть только 2-й пост («Заголовок второй» и «Второй подлинник»), однако ничего не отображается.
Как вы можете видеть в файле ".ts", я записываю на консоль строку, которую возвращаю в функции search (). При поиске 2-го поста я получаю следующее:
This is what I got back = {"id":2,"title":"Title Two","author":"Auth Two"}
Однако на странице html ничего не отображается.