将数据推入对象

时间:2018-07-20 08:59:55

标签: javascript angular

我需要将数据合并/推送到对象中。
我的代码是:

export class HeaderComponent implements OnInit {
  site_heading = "Business Casual";
  menubar = [];
  isLogged = true;
  constructor() {
    this.menubar = [{
      'link': 'home',
      'name': 'Home'
    }, {
      'link': 'about',
      'name': 'About'
    }, {
      'link': 'store',
      'name': 'Store'
    }, {
      'link': 'products',
      'name': 'Products'
    }];
    let userMenu = [{
      'link': 'myprofile',
      'name': 'My Profile'
    }, {
      'link': 'logout',
      'name': 'LogOut'
    }];
    userMenu.forEach(function(value) {
      this.menubar.push(value);
    });
  }
  ngOnInit() {}
}

显示错误:

  

错误TypeError:无法读取未定义的属性“菜单”

3 个答案:

答案 0 :(得分:3)

您需要使用箭头功能代替常规功能,以确保this上下文正常:

...
userMenu.forEach((value) => {
    this.menubar.push(value);
});
...

答案 1 :(得分:2)

这应该有效:

let self = this
userMenu.forEach(function (value) {
    self.menubar.push(value);
});

或lambda表达式(箭头功能)

答案 2 :(得分:0)

使用箭头功能,

箭头功能是匿名的,不会绑定它自己的。因此,这就是当前情况。

SELECT 
    cust.imsi,
    cust.company_id,
    cust.business_plan,
    CASE
      WHEN
      (
        SELECT MAX(subop.last_accessed)
          FROM operator subop
            WHERE subop.msisdn = op.msisdn
              GROUP BY subop.msisdn
                HAVING COUNT(*) > 1
      )
      THEN
        op.last_accessed
      ELSE
        'Never'
    END
      AS last_accessed_date
FROM customer cust 
  INNER JOIN operator op
    ON cust.imsi = op.imsi
WHERE cust.imsi = '74583';