#angular #stomp #sockjs
#angular #stomp #sockjs
Вопрос:
Я продолжаю сталкиваться с ошибками и видел, что
Ошибка: не удается разрешить все параметры для компонента данных
Я не знаю, как я могу его отладить, откуда он берется. Любая помощь или подсказка будут оценены.
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
)
}
}
В tsconfig.ts
опции оба emitDecoratorMetadata
и experimentalDecorators
имеют значение true.
И в systemjs.config
библиотеки включаются таким образом :
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]
Ответ №1:
Похоже, что клиент не является сервисом angular 2.
Если это так, то вы не можете ввести его через конструктор.
Взгляните на это, в нем используется более ранняя версия angular 2, но она должна дать вам представление о том, как заставить ее работать.
Комментарии:
1. Я попытаюсь внедрить его как сервис, вернуться и обновить. Большое спасибо за подсказку.
2. При использовании этого примера я получаю сообщение об ошибке типа
core.umd.js:3462 EXCEPTION: Uncaught (in promise): SyntaxError: Failed to construct 'WebSocket': The URL's scheme must be either 'ws' or 'wss'. 'http' is not allowed.
@Meireles Как я могу разрешить HTTP-схему?