2017-02-09 48 views
0

下面的代码提供

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

我已经研究过Angular 2 Di not working - cannot resolve all parameters forAngular 2 RC 4 "(SystemJS) Can't resolve all parameters for [object Location]: " in IE 11,但他们似乎不是我的同样的问题。

我可以看到WebSocket的参数有问题。在构造函数的括号中调用参数是不可能的,即使我把它关掉,只留下providers: [$WebSocket],我仍然得到错误。如果我离开只是

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

没有错误

究竟是那些SystemJS试图解决paremeters?

即使我不知道这是什么,我的emitDecorator是真的。

回答

1

试试这个

//...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个PARAM,你需要提供。

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