Angular 财产';x';不存在于类型';插座类型';虽然我已经申报了

Angular 财产';x';不存在于类型';插座类型';虽然我已经申报了,angular,ionic-framework,ionic2,Angular,Ionic Framework,Ionic2,这是我的课 import { Injectable } from '@angular/core'; import { Events } from 'ionic-angular'; @Injectable() export class Socket { public isConnected: boolean = false; constructor(public events: Events) { console.log("Socket.js constructed.");

这是我的课

import { Injectable } from '@angular/core';
import { Events } from 'ionic-angular';

@Injectable()
export class Socket {

  public isConnected: boolean = false;

  constructor(public events: Events) {
    console.log("Socket.js constructed.");
  }
}
我使用它就像:

import { Socket } from '../App/Socket/Socket';
@Component({
  templateUrl: 'layout.html'
})
export class ConferenceApp {
    constructor() {
        console.log(Socket.isConnected);
    }
}
但是,当我运行ionic Service时,我发现类型“typeof Socket”上不存在属性“isConnected”错误

Typescript不支持附加在类范围上的值


谢谢。

您在这里使用它的方式

console.log(Socket.isConnected);
isConnected
需要是静态属性,而不是您创建的实例属性

我假设您希望以不同的方式使用它,因为您添加了
@Injectable()

您需要在某处提供服务,以便能够将其注入。 我不知道
NgModule
是否已经登陆爱奥尼亚,但如果不需要与其他组件共享,您也可以在组件中提供它

要注入它,请将其添加到构造函数参数列表中

从“../App/Socket/Socket”导入{Socket};
@组成部分({
templateUrl:'layout.html',
提供者:[套接字]
})
导出类ConferenceApp{
构造函数(套接字:套接字){
console.log(socket.isConnected);
}
}

然后使用构造函数参数而不是类名访问它。

这里使用它的方式

console.log(Socket.isConnected);
isConnected
需要是静态属性,而不是您创建的实例属性

我假设您希望以不同的方式使用它,因为您添加了
@Injectable()

您需要在某处提供服务,以便能够将其注入。 我不知道
NgModule
是否已经登陆爱奥尼亚,但如果不需要与其他组件共享,您也可以在组件中提供它

要注入它,请将其添加到构造函数参数列表中

从“../App/Socket/Socket”导入{Socket};
@组成部分({
templateUrl:'layout.html',
提供者:[套接字]
})
导出类ConferenceApp{
构造函数(套接字:套接字){
console.log(socket.isConnected);
}
}

然后使用构造函数参数而不是类名访问它。

您需要通过
new Socket()
创建
Socket
的实例。然后您将能够访问该属性。您还可以通过依赖项注入来注入它。

您需要通过
new Socket()
创建
Socket
的实例。然后您将能够访问该属性。您还可以通过依赖项注入来注入它。

您的问题是,您将套接字用作
静态类,而不是使用angular2的DI系统

这将有助于:

import { Socket } from '../App/Socket/Socket';
@Component({
  templateUrl: 'layout.html'
})
export class ConferenceApp {
    constructor(socket:Socket) {
        console.log(socket.isConnected);
    }
}

因为它使用的是angular2的DI系统,所以您将收到一个Socket实例,而不是实际的
Socket
类。

您的问题是,您将Socket用作
静态
类,而不是使用angular2的DI系统

这将有助于:

import { Socket } from '../App/Socket/Socket';
@Component({
  templateUrl: 'layout.html'
})
export class ConferenceApp {
    constructor(socket:Socket) {
        console.log(socket.isConnected);
    }
}

因为它使用的是angular2的DI系统,所以您将收到一个套接字实例,而不是实际的
Socket
类。

共享
。/App/Socket/Socket
?是
。/App/Socket/Socket
服务
?共享
。/App/Socket/Socket的代码
?是
。/App/Socket/Socket
服务