Свойство 'profile' не существует для типа 'void' - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть приложение angular 5, в котором я преобразовал некоторые функции, которые я первоначально разработал в AngularJs.

У меня есть одна функция, где я сравниваю два массива и склеиваю дубликаты.

Но по какой-то причине в Angular (2+) я получаю следующую ошибку:

[21:22:15]  typescript: src/pages/customize-share/customize-share.ts, line: 74 
            Property 'profile' does not exist on type 'void'. 

      L73:  this.contact.shared.emails.map(function(val) {
      L74:    this.profile.emails.indexOf(val.email_address) < 0 ? this.emailArray.splice(val,1) : '';
      L75:  });

Мне не хватает инициализации типа массива здесь?

К вашему сведению, электронные письма имеют следующий тип интерфейса:

export interface IEmail {
    email_type: string;
    email_address: string;
}

Ответы [ 3 ]

0 голосов
/ 27 апреля 2018

Скорее всего, ошибка связана с областью действия this. Чтобы избежать этого, используйте => функцию стрелки вместо записи anonymous function

this.contact.shared.emails.map((val) => {
  this.profile.emails.indexOf(val.email_address) < 0 ? this.emailArray.splice(val,1) : '';
});

Дополнительную информацию о функции стрелки вы можете найти в этой статье

0 голосов
/ 27 апреля 2018

Попробуйте удалить функцию (val) и использовать val => примерно так:

this.contact.shared.emails.map(val => {
    this.profile.emails.indexOf(val.email_address) < 0 ? this.emailArray.splice(val,1) : ''; 
});
0 голосов
/ 27 апреля 2018

Вероятно из-за объема this.

Попробуйте:

this.contact.shared.emails.map((val) => {
    this.profile.emails.indexOf(val.email_address) < 0 ? this.emailArray.splice(val,1) : '';
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...