Error: (SystemJS) Can't resolve all parameters for $WebSocket: ([object Object], [object Object], ?)

Error: (SystemJS) Can't resolve all parameters for $WebSocket: ([object Object], [object Object], ?)

下面的代码给出

Error: (SystemJS) Can't resolve all parameters for $WebSocket: ([object Object], [object Object], ?).

app.component.ts

import { Component } from '@angular/core';
import {$WebSocket} from 'angular2-websocket/angular2-websocket'
import {OnInit} from '@angular/core';
import {Inject} from '@angular/core';

@Component({
  selector: 'my-app',
  templateUrl: `app/root-template.html`,
  providers: [$WebSocket]
})
export class AppComponent implements OnInit{       
  constructor(private websocket:$WebSocket) {

  }

    ngOnInit(): void {

    console.log('init')
  }

}

并且angular2-websocket代码可以在这里看到:https://github.com/afrad/angular2-websocket/blob/master/src/angular2-websocket.ts

我调查了 and ,但它们似乎与我的问题不同。

我发现 Websocket 的参数有问题。在构造函数的括号中调用参数是不可能的,即使我把它取下来只留下 providers: [$WebSocket] 我仍然会得到错误。如果我只留下

import {$WebSocket} from 'angular2-websocket/angular2-websocket'

没有错误

SystemJS 试图解析的那些参数到底是什么?

我的 emitDecorator 是真的,尽管我不知道这是干什么用的。

试试这个

//...import

let myws = new $WebSocket("ws://127.0.0.1:7000"); // config your url

@Component({
  //...
  providers: [{provide: $WebSocket, useValue: myws}]
})
export class AppComponent implements OnInit{       
  // ...

}

$WebSocket 构造函数需要 1 个参数,您需要提供它。

constructor(private url: string, private protocols?: Array<string>, private config?: WebSocketConfig, private binaryType?: BinaryType)

https://github.com/afrad/angular2-websocket/blob/master/src/angular2-websocket.ts#L45