2016-10-07 1 views
0

je continue à avoir et d'erreur, et ont vu queangulaire 2 et Stomp: ne peut pas résoudre tous les paramètres

Error: Can't resolve all parameters for DataComponent

Je ne sais pas comment je peux le déboguer soit d'où il vient. Toute aide ou indice serait apprécié.

Datacomponent.ts

import { Component, OnInit, Inject } from '@angular/core'; 

import { Message, Client, Stomp } from 'stompjs'; 
import * as SockJS from 'sockjs-client'; 

@Component({ 
    selector: 'data', 
    template: ` 
     <div id="raw"> 
      <h2>Messages</h2> 
      <p>{{message}}</p> 
     </div> 
     `, 
}) 
export class DataComponent implements OnInit, OnDestroy { 
    constructor(private client : Client) { } 

    mq_username = "guest"; 
    mq_password = "guest"; 
    mq_vhost = "/"; 
    mq_url  = 'http://localhost:15674/stomp'; 
    mq_queue = "/exchange/helloworld"; 

    public message: string; 

    /** Callback on_connect to queue */ 
    public on_connect =() => { 
     console.log('client', this.client); 
     this.client.subscribe(this.mq_queue, function(message: Message) { 
      this.message = message.body; 
     }) 
    } 
    public on_connect_error(){ 
     console.log('connection failed'); 
    } 

    ngOnInit() { 
     this.client = Stomp.client(this.mq_url); 
     this.client.connect(
      this.mq_username, 
      this.mq_password, 
      this.on_connect, 
      this.on_connect_error, 
      this.mq_vhost 
     ) 
    } 
} 

Dans l'option tsconfig.ts à la fois emitDecoratorMetadata et experimentalDecorators sont à true.

Et dans systemjs.config bibliothèques sont inclus ainsi:

System.config({ 
    paths: { 
     'npm:': 'node_modules/' 
    }, 
    map: { 
     app: 'dist', 

     // angular bundles 
     [ANGULAR BUNDLES HERE] 

     // other libraries 
     'rxjs':      'npm:rxjs', 
     'sockjs-client': 'lib/sock-js/sockjs.min.js', 
     'stompjs': 'node_modules/stompjs/lib/stomp.min.js', 
    }, 
    [etc] 

Répondre

1

On dirait que le client est pas un service 2 angulaire.

Si tel est le cas, vous ne pouvez pas l'injecter via le constructeur.

Jetez un oeil à this il utilise une version antérieure angulaire 2, mais il devrait vous donner une idée sur la façon de le faire fonctionner.

+0

Je vais essayer de l'injecter comme un service et de revenir avec et mettre à jour. Merci beaucoup pour l'indice. –

+0

Lorsque j'utilise cet exemple, j'obtiens une erreur comme 'core.umd.js: 3462 EXCEPTION: Uncaught (promis): SyntaxError: Impossible de construire 'WebSocket': Le schéma de l'URL doit être 'ws' ou 'wss'. 'http' n'est pas autorisé. ' @Meireles Comment puis-je autoriser le schéma HTTP? –