Как исправить следующую ошибку на моем представлении:

ERROR in src/app/sermon/sermon.component.html(14,46): : Property 'sessionEnum' does not exist on type 'string[]'.

Код для представления:

<div class="product-details text">
  <ul class="info-list">
    <li><span>Session : </span> {{ sermon?.sermonSession?.sessionEnum }}</li>
    <li><span>Recorded : </span> {{ sermon.date }}</li>
  </ul>
</div>

Я так понимаю, мне нужно создать это свойство в sermonSession:

export namespace SermonModule {

  export interface Serializable<T> {
    deserialize(input: Object): T;
  }

  export class Sermon implements Serializable<Sermon> {
    id: string;
    name: string;
    fileName: string;
    speaker: string;
    description: string;
    tags: string[];
    date: string;
    sermonSession: string[];

    deserialize(input) {
      this.id = input.id;
      this.name = input.name;
      this.fileName = input.fileName;
      this.speaker = input.speaker;
      this.description = input.description;
      this.tags = input.tags;
      this.date = input.date;
      this.sermonSession = input.sermonSession;
      return this;
    }
  }
}

Вопрос в том ... как мне создать собственность на собственности?

Мой код для компонента находится здесь.

-1
methuselah 23 Окт 2018 в 10:28

2 ответа

Лучший ответ

Если вы хотите использовать его так: sermon? .SermonSession? .SessionEnum, вы должны сделать его объектом, а не массивом.

let sermonSession = { sessionEnum: 'some string'};

Но если вы передадите массив объектов, вы можете сделать это так:

sermon.sermonSession[0].sessionEnum 

Все зависит от вашей реализации.

Как будет выглядеть объектная модель:

export namespace SermonModule {

  export interface Serializable<T> {
    deserialize(input: Object): T;
  }

  export class Sermon implements Serializable<Sermon> {
    id: string;
    name: string;
    fileName: string;
    speaker: string;
    description: string;
    tags: string[];
    date: string;
    sermonSession: object;

    deserialize(input) {
      this.id = input.id;
      this.name = input.name;
      this.fileName = input.fileName;
      this.speaker = input.speaker;
      this.description = input.description;
      this.tags = input.tags;
      this.date = input.date;
      this.sermonSession = input.sermonSession;
      return this;
    }
  }
}
3
vancho 23 Окт 2018 в 07:55

Вам нужно создать объект вроде

this.sermon={
   ...
   sermonSession: {
     ...,
     sessionEnum:"value"
   }
}

Проверьте вложение вашего объекта, похож ли он на этот формат или нет.

1
Kiran Shetty 23 Окт 2018 в 07:42
52943424