У меня есть следующий компонент Angular 6 для редактирования сообщения:
import { Component, OnInit, Input } from '@angular/core';
@Component({
selector: 'post-edit',
templateUrl: './post-edit.component.html',
styleUrls: ['./post-edit.component.less']
})
export class PostEditComponent implements OnInit {
@Input() id: number;
title: string;
content: string;
categoryId: number;
categories: Array<{ id: number, name: string }>;
constructor() { }
ngOnInit() {
}
}
При вызове API для получения данных для сообщения с postId он возвращает:
{
"data": [
{
"postId": 1,
"title": "post title",
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
"categoryId": 2,
"created_at": "2018-10-20 10:14:23"
}
]
}
ИтакЯ создал PostService в Angular следующим образом:
@Injectable()
export class PostService {
constructor(private http: Http) { }
public get() { }
public create(post) { }
public getById(id: number) { }
}
Вопрос 1
Должен ли я определять модель для компонента (редактировать, перечислять, создавать, ...)следующим образом?
export class PostEditModel {
id: number;
title: string;
content: string;
categoryId: number;
}
Вопрос 2
Должна ли переменная categories
, содержащая список категорий, отображаться в HTML «select», быть включена в PostEditModelили просто в компоненте как есть?
Вопрос 3
Свойства Post в PostEditComponent или PostEditModel меньше свойств, возвращаемых API (пример:create_at).
Должен ли каждый метод обслуживания иметь свою собственную модель?Например:
public getById(id: number) { }
вернет PostServiceGetApiModel, который при вызове PostEditComponent будет сопоставлен с PostEditModel.
Каков наилучший способ сделать это сопоставление?
В основном я пытаюсь найти лучшее решение для приложения, которое нужно масштабировать ...