财产'简介'在类型' void'上不存在

时间:2018-04-27 04:27:19

标签: 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 :(得分:1)

可能由于this的范围。

尝试:

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

答案 1 :(得分:1)

错误很可能是因为this的范围,为了避免使用=>箭头功能而不是写anonymous function

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

有关箭头功能的更多信息,请参阅本文

答案 2 :(得分:0)

尝试删除函数(val)并使用val =&gt;像这样:

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