NgZone / Angular2 / Ionic2 TypeError:无法读取未定义的属性’run’

前端之家收集整理的这篇文章主要介绍了NgZone / Angular2 / Ionic2 TypeError:无法读取未定义的属性’run’前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我收到此错误TypeError:无法在Subscriber.js中读取未定义的属性’run’:229并且不知道为什么 – 在离子beta 10中这个代码工作正常…在11中没有.
import {Component,NgZone} from '@angular/core';
import {NavController} from 'ionic-angular';

declare var io;

@Component({
  templateUrl: 'build/pages/home/home.html'
})    
export class HomePage {
    static get parameters() {
        return [NgZone];
    }

    zone: any;
    chats: any;
    chatinp: any;
    socket: any;

constructor(public navCtrl: NavController,ngzone) {
    this.zone = ngzone;
    this.chats = [];
    this.chatinp ='';
    this.socket = io('http://localhost:3000');
    this.socket.on('message',(msg) => {
        this.zone.run(() => {
            this.chats.push(msg);
        });
    });
}

send(msg) {
    if(msg != ''){
        this.socket.emit('message',msg);
    }
    this.chatinp = '';
   }
}
而不是像这样注入它:
static get parameters() {
  return [NgZone];
}

你为什么不这样做:

import { Component,NgZone } from "@angular/core";

@Component({
  templateUrl:"home.html"
})
export class HomePage {

  public chats: any;

  constructor(private zone: NgZone) {

    this.chats = [];
    let index: number = 1;

    // Even though this would work without using Zones,the idea is to simulate
    // a message from a socket.
    setInterval(() => { this.addNewChat('Message ' + index++); },1000);
  }

  private addNewChat(message) {
    this.zone.run(() => {
        this.chats.push(message);
    });
  }
}

我正在添加私有区域:NgZone作为构造函数中的参数,然后我可以通过使用区域变量来使用run()方法,如下所示:

this.zone.run(() => {
  // ... your code
});
原文链接:https://www.f2er.com/angularjs/142297.html

猜你在找的Angularjs相关文章