2017-11-24 14 views
0

私はSignalR私の角度5アプリケーションで使用しようとしています。

私はをDefinitelyTyped からこれらの強力な型指定されたインストール:私のpackages.json

npm install --save @types/jquery 
npm install --save @types/signalr 

活字体をバージョン2.5.3 示しています。

今、私はこのようにそれを使用しようとしている:

import { Injectable } from '@angular/core'; 

@Injectable() 
export class SignalRService { 

    constructor() {} 

    public ConnectTo(url: string): void { 

     var hubConnection = $.hubConnection(); 
     var hubProxy = hubConnection.createHubProxy('DashboardHub'); 
     hubProxy.on('Example', (e: any) => { 
      console.log('worked'); 
     }); 

     hubConnection.start(); 
    } 
} 

コンパイラは、次のと文句を言う:

error TS2304: Cannot find name '$'. 

...インテリセンスが$.hubを見つけることができるにもかかわらず:

Image showing intellisense


ファイルにdeclare var $ :any;を追加しようとするとコンパイルされますが、ブラウザのコンソールに別のエラーが表示されます:$.hubConnection is not a function

何か不足していますか?これらの手順を実行する必要があり

+0

あなたはまだ$を宣言していませんでした:[別のスレッドへの参照](https://stackoverflow.com/Question/43934727/how-to-use-jquery-plugin-with-angular-4) –

+0

@ JanSomersJanS91これはこれを行う古い方法だと思っていましたが、DefinitelyTypesはこれをもう必要ないようにしました。とにかく、それを追加すると '$ .hubConnectionは関数ではありません。 'というメッセージが表示されます。 – Alisson

+0

奇妙なことにはうまくいかないと思うかもしれません。おそらくあなたは[this](https://stackoverflow.com/a/46113678/7018180) –

答えて

2

角度でSignalRを使用するには:

はjqueryの、NPMを使用してsignalrパッケージをインストールします。

npm install signalr 
npm install jquery 

は、タイプを追加します。

npm install --save @types/jquery 
npm install --save @types/signalr 

はangular-するためのスクリプトを追加します。 cli.json

"apps": [{ 
    "scripts": [ 
     "../node_modules/jquery/dist/jquery.min.js", 
     "../node_modules/signalr/jquery.signalR.min.js" 
    ], 
}] 

そして、あなたが追加する必要がサービス中:

declare var $: any; 

単純な角度のコード例:

import { Injectable } from '@angular/core'; 

declare var $: any; 
@Injectable() 
export class SignalrService { 
    private connection: any; 
    private proxy: any; 
    private ulr: any; 

    constructor() {} 

    public startConnection(): void { 
     this.connection = $.hubConnection(this.url); 
     this.proxy = this.connection.createHubProxy('ProcessingHub'); 

     this.connection.start().done((data: any) => { 
      console.log('Connected to Processing Hub'); 
      this.sendMessage(); 
     }).catch((error: any) => { 
      console.log('Hub error -> ' + error); 
     }); 
    } 

    public sendMessage(): void { 
     this.proxy.invoke('SendMessage', 'test') 
      .catch((error: any) => { 
       console.log('SendMessage error -> ' + error); 
      }); 
    } 
} 
+0

これは 'angular-cli.json'を変更するのを忘れてしまったようです。私は型をインストールする必要もなく、ちょうどjqueryとsignalrをインストールするだけで十分でした。 – Alisson

関連する問題