У меня есть простое угловое 6 приложение, которое имеет textarea , я хочу отсортировать список комментариев по дате добавления
Вот html :
<div class="comments-card card">
<div class="comments" *ngFor="let comment of comments">
<div class="commets_header">
<button class="comments_button">Hide comments<span class="comments_count">(353)</span></button>
</div>
<div class="comments-description">
<div class="comments-photo">
<img src="https://randomuser.me/api/portraits/men/84.jpg" alt="">
</div>
<div class="comments_wrapper">
<div class="comments_details">
<h1>{{comment.username}}</h1>
<span class="days">{{comment.date | date:'dd.MM.yyyy H:mm'}}</span>
</div>
<div class="comments_text">
<p>{{comment.description}} </p>
</div>
</div>
</div>
<hr class="comments_line" >
</div>
<form class="add-comments" [formGroup]="addForm" (keyup.enter)="addComments()">
<div class="form-group">
<textarea class="form-control" rows="1" placeholder="Add comments" formControlName="description" id="description"></textarea>
</div>
</form>
</div>
</div>
Вот изображение кода в компонентах ts для получения комментариев
Вот код компонента для получения и добавление комментариев
import { Component, OnInit } from '@angular/core';
import { UserService } from '../service/user.service';
import { Status } from '../model/statuses.model';
import { Comment } from '../model/comments.model';
import {FormBuilder, FormGroup, Validators} from '@angular/forms';
import { User } from '../model/user.model';
import { ActivatedRoute } from '@angular/router';
@Component({
selector: 'app-user-profile',
templateUrl: './user-profile.component.html',
styleUrls: ['./user-profile.component.scss']
})
export class UserProfileComponent implements OnInit {
comments: Comment[];
constructor(private formBuilder: FormBuilder, private activeRouter: ActivatedRoute, private userService: UserService) {
}
addForm: FormGroup;
ngOnInit() {
this.addForm = this.formBuilder.group({
id: [],
description: ['', Validators.required],
});
this.activeRouter.params.subscribe((params) => {
// tslint:disable-next-line:prefer-const
let id = params['id'];
this.userService.getComments(id)
.pipe(
map(data => data.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime()))
)
.subscribe(data => this.comments = data);
});
}
Вот часть кода в служебном файле для получения комментариев
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import {Status } from '../model/statuses.model';
import { Comment } from '../model/comments.model';
import { User } from '../model/user.model';
@Injectable({
providedIn: 'root'
})
export class UserService {
status: Status[];
constructor(private http: HttpClient) { }
commentsUrl = 'http://localhost:3000/comment';
addComments(comments: Comment) {
return this.http.post(this.commentsUrl, comments);
}
getComments(id: number) {
return this.http.get<Comment[]>(this.commentsUrl);
}
}
Вот комментарии json файл:
"comment": [
{
"id": 1,
"username": "Michael Ross",
"city": "New York USA",
"days": "1d",
"task_id": 1,
"description": "Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et lig"
},
{
"id": 2,
"username": "Michael Ross",
"city": "New York USA",
"days": "1d",
"task_id": 1,
"description": "Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et lig"
}
]
Вот модель комментариев
export class Comment {
id: number;
username: string;
email: string;
days: number;
description: string;
}
Когда я запускаю приложение, я получаю следующую ошибку
ERROR in src/app/user-profile/user-profile.component.ts(50,54): error TS2339: Property 'date' does not exist on type 'Comment'.
src/app/user-profile/user-profile.component.ts(50,83): error TS2339: Property 'date' does not exist on type 'Comment'.
Я хочу, чтобы эти комментарии были отсортированы по дате их добавления, поскольку мы знаем, что у нас нет порядка по трубе в угловой 6 ,
Что мне нужноизменить, чтобы получить то, что я хочу?любая помощь будет оценена спасибо