为什么即使在初始化为数组后,Typescript仍然无法读取push方法? (ANGULAR2)

时间:2017-06-19 08:27:11

标签: angular pubnub

我正在尝试使用pubnub和Angular2创建一个聊天应用程序,但我仍然坚持这一部分。

import { Injectable } from '@angular/core';
import { PubNubAngular } from 'pubnub-angular2';

@Injectable()
export class ChatService {
  public uuid: string;
  public message: string;
  public messages = [];  <------------------- Already initialized
  public channel: string[];

  constructor(private pubnub:PubNubAngular) {

    //  .......  ///

    this.pubnub.addListener({
      message: function (m) {
        let msg: object = {
          origin: m.channel,
          timetoken: m.timetoken,
          content: m.message,
          sender: m.sender
        }
        this.messages.push(msg); <-------- PRODUCES A "CANNOT READ PROPERTY 
                                           'PUSH' OF TYPE UNDEFINED IN [NULL]" ERROR
      }
    });
  }

请帮助,似乎由于某种原因我无法访问该部分中的消息数组,并且可能为什么它无法检测推送方法。

1 个答案:

答案 0 :(得分:2)

使用箭头功能可以解决您的问题

message: (m) => {
  let msg: object = {
    origin: m.channel,
    timetoken: m.timetoken,
    content: m.message,
    sender: m.sender
  }
  this.messages.push(msg); <-------- now this is your component instance
}

在此处查看有关箭头功能的更多信息