Я столкнулся с классической проблемой «Не функция» в Ionic Framework, я надеюсь, что вы поможете мне лучше разобраться в этом случае.
Я пытаюсь извлечь объект из массива. У объекта есть частные свойства, которые я получаю с помощью простых методов получения.
Проблема возникает, когда выполняется эта строка всего класса выше:
this.selectedWorkoutPlan = this.workoutPlanList.find(object => object.getId() === this.id);
Консоль возвращает указанную ранее ошибку.
Это мой файл .ts:
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import {WorkoutPlanService} from "../../services/workout-plan.service";
import {WorkoutPlan} from "../../models/workout-plan";
@IonicPage()
@Component({
selector: 'page-workout-plan-detail',
templateUrl: 'workout-plan-detail.html',
})
export class WorkoutPlanDetailPage {
id: number = 0;
title: string = "";
startDate: Date = new Date();
endDate: Date = new Date();
workoutPlanList: WorkoutPlan[] = [];
selectedWorkoutPlan: WorkoutPlan = new WorkoutPlan();
constructor(public navCtrl: NavController, public navParams: NavParams,
private workoutPlanService: WorkoutPlanService) {
}
ionViewDidLoad() {
this.id = this.navParams.get("id");
this.workoutPlanList = this.workoutPlanService.getWorkoutPlanList();
this.selectedWorkoutPlan = this.workoutPlanList.find(object => object.getId() === this.id);
}
}
и это класс модели .ts.
import {WorkoutExercise} from "./workout-exercise";
export class WorkoutPlan {
private title: string;
private exercises: WorkoutExercise[];
private startDate: Date;
private endDate: Date;
private id: number;
constructor() {
this.id = new Date().getTime();
}
setTitle(newTitle: string) {
this.title = newTitle;
}
setExercises(newExercises: WorkoutExercise[]) {
this.exercises = newExercises;
}
setStartDate(newStartDate: Date) {
this.startDate = new Date(newStartDate);
}
setEndDate(newEndDate: Date) {
this.endDate = new Date(newEndDate);
}
setId(newId: number) {
this.id = newId;
}
getTitle() {
return this.title;
}
getExercises() {
return this.exercises;
}
getStartDate() {
return this.startDate;
}
getEndDate() {
return this.endDate;
}
getId() {
return this.id;
}
}
Мне что-то не хватает в синтаксисе?
На мой взгляд, я думал, что объект массива будет иметь как свойства, так и методы, не так ли?
Спасибо заранее за ваше время.
Также было бы полезно, если бы вы опубликовали точно, как выглядит ошибка
Ошибка говорит: «object.getId () не является функцией».



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я предполагаю, что вы можете сериализовать свои объекты WorkOutPlan где-то в WorkoutPlanService, а затем анализировать строки обратно в объекты WorkOutPlan, что приводит к потере связанных методов.
Вы когда-нибудь натягиваете эти объекты?
Нет, я не натягиваю никакие объекты. Я использую эту службу только для получения списка объектов WorkoutList, хранящихся в ней.
Пожалуйста, предоставьте дополнительно свой WorkoutPlanService.