将Horizo​​n IO导入角度2项目的正确方法

时间:2017-03-08 10:48:02

标签: angular typescript horizon

我目前将Horizo​​nIO导入我的角度2项目的方式如下:

var horizon = require('@horizon/client');

@Injectable()
export class DbService {
    private horizon;

    constructor() {
        this.horizon = Horizon({host: 'localhost:8181'});
    }
}

现在我不觉得这是正确的方式,因为我应该能够

import { Horizon } from '@horizon/client';

虽然它没有抛出错误,但该变量不可用。

思想/评论

2 个答案:

答案 0 :(得分:2)

ES6导入相当于

var Horizon = require('@horizon/client');

import * as Horizon from '@horizon/client';

你所做的相当于

var Horizon = require('@horizon/client').Horizon;

编辑:

我现在使用以下代码进行地平线注射:

import { Injectable } from '@angular/core';
import * as Hz from '@horizon/client';

@Injectable()
export class Horizon extends Function {
  private _hz;

  constructor() {
    super('...args', 'return this._hz(...args)');
    this._hz = new Hz({host: 'localhost:8181'});

    return this.bind(this);
  }
}

然后可以像直接导入它一样注入和调用它:

constructor(hz: Horizon){
  hz('messages').watch().subscribe(...);
}

不确定这是否比直接导入Horizo​​n有任何好处,但使用DI感觉更有棱角。

答案 1 :(得分:0)

检查@horizon/client文件夹中是否有node_modules,如果不是:请尝试npm installhttps://www.npmjs.com/package/@horizon/client)。