Как интегрировать приложение angular 2+ в платформу Openfin - PullRequest
0 голосов
/ 03 сентября 2018

Мне нужно интегрировать мое существующее приложение angular 5 в openfin (особенно с использованием встроенного представления wpf). Мне нужно будет общаться со встроенным приложением, используя шину Interapplication. Я не могу найти пример того, как я могу интегрировать это в свой компонент.

1 Ответ

0 голосов
/ 09 сентября 2018

Хорошо, я наконец понял это.

Есть несколько вещей, чтобы заставить это работать. Прежде всего, расскажите компилятору typcript о типе, включив пакет @ types / openfin - npm. Вы заметите, что редактор начнет распознавать тип в его значении intellisense, но когда вы создаете приложение, компилятор машинописного текста выдаст исключение - «не удается найти имя« fin ».

Чтобы это исправить, откройте свой tsconfig.json и убедитесь, что вы включили либо: - 1. Вся папка @types в typeroots 2. Типы плавников в массиве типов.

{ .. "target": "es5", "typeRoots": [ "node_modules / @ типы" ], ... } }

После этого изменения приложение должно скомпилироваться без ошибок при наборе текста.

Теперь, в вашем компоненте приложения, вам нужен способ узнать, работает ли приложение под открытым плавником. Как только переменная fin станет доступной, мы сможем использовать шину InterApplication и все остальные возможности openfin. Базовый компонент приложения может выглядеть так: -

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

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'test-ang';
  version: string;

  private _mainWin: fin.OpenFinWindow;

  constructor() {
    this.init();
  }

  init() {
    try {
      fin.desktop.main(() => this.initWithOpenFin());

    } catch (err) {
      this.initNoOpenFin();
    }
  };

  initWithOpenFin() {
    this._mainWin = fin.desktop.Window.getCurrent();

    fin.desktop.System.getVersion(function (version) {
      try {
        this.version = "OpenFin version " + version;
      } catch (err) {
        //---
      }
    });

  }

  initNoOpenFin() {
    alert("OpenFin is not available - you are probably running in a browser.");
  }

}
...