加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在Angular 2中注入服务时传递依赖参数(Ionic 2 / Angular 2

发布时间:2020-12-17 08:48:43 所属栏目:安全 来源:网络整理
导读:我正在制作一个示例应用程序,以便在typescript中的ionic 2中连接到websocket服务器.链接到 repo 我的要求是在应用程序启动期间进行websocket连接 我正在使用angular2-websocket创建连接. 参考文献: http://blog.thoughtram.io/angular/2015/09/17/resolve-s
我正在制作一个示例应用程序,以便在typescript中的ionic 2中连接到websocket服务器.链接到 repo

我的要求是在应用程序启动期间进行websocket连接

我正在使用angular2-websocket创建连接.

参考文献:

> http://blog.thoughtram.io/angular/2015/09/17/resolve-service-dependencies-in-angular-2.html
> http://blog.thoughtram.io/angular/2015/05/18/dependency-injection-in-angular-2.html

我收到错误“无法解析’$WebSocket’的所有参数(字符串,数组,?).确保所有参数都使用Inject修饰或具有有效的类型注释,并且’$WebSocket’使用Injectable进行修饰. “

码:
app.ts

import {App,Platform} from 'ionic-framework/ionic';
import {TabsPage} from './pages/tabs/tabs';
import {ConnectionService} from './framework/connection/connection-service'
import {$WebSocket} from 'angular2-websocket/angular2-websocket';
import {bootstrap} from 'angular2/platform/browser';

// https://angular.io/docs/ts/latest/api/core/Type-interface.html
import {Type} from 'angular2/core';


@App({
  template: '<ion-nav [root]="rootPage"></ion-nav>',config: {}
})
export class MyApp {
  rootPage: Type = TabsPage;

  constructor(platform: Platform,private conn : ConnectionService) {
    platform.ready().then(() => {
      this.conn.connect();
    });
  }
}
bootstrap(MyApp,[$WebSocket,ConnectionService]);

connection-service.ts

import {Injectable,Component,Inject} from 'angular2/core';
import {$WebSocket} from 'angular2-websocket/angular2-websocket';
import {bootstrap} from 'angular2/platform/browser';

@Injectable()
export class ConnectionService {

    private _status: number;

    //private connection: $WebSocket;

    constructor( private connection : $WebSocket = new $WebSocket("ws://echo.websocket.org") ) {

    console.log("Starting connection");

   //this.connection = new $WebSocket("ws://echo.websocket.org");

    this.connection.onClose(this.onCloseHandler);
    this.connection.onError(this.onErrorHandler);
    this.connection.onOpen(this.onOpenHandler);
    this.connection.onMessage(this.onRecieveHandler,{});

}
...
public connect() {
    this.connection.connect(true);
}
...
}
bootstrap(ConnectionService,[$WebSocket]);
我的问题的解决方案是使用@App()Annotation(特定于离子)提供程序字段而不是使用bootstrap
bootstrap(ConnectionService,[provide($WebSocket,useValue: new WebSocket("ws://echo.websocket.org")]);

例如.

@App({
  template: '<ion-nav [root]="rootPage"></ion-nav>',config: {},providers : [ provide( $WebSocket,{ useValue: new $WebSocket("ws://echo.websocket.org") }),ConnectionService]
})

工作样本可以找到here

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读