我收到此错误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
- });