импортировать самодельную функцию в другой класс в машинописи - PullRequest
0 голосов
/ 11 сентября 2018

Я делаю приложение Hybrid AngularJS / Angular5.Поэтому я пытаюсь шаг за шагом изменить мои файлы JavaScript на Typescript.У меня был файл javascript:

(function () {
    'use strict';

    var domainPath = "http://localhost:26264/";
    var reportAPI = "http://localhost:58629/";
    var onlineHelpURL = "http://localhost:8085/";
    var hh6ServiceUrl = "https://localhost:40100/";

    var sysSettings = {
        webServiceURL: domainPath,
        hh6ServiceUrl: hh6ServiceUrl,
        reportServiceURL: reportAPI,
        onlineHelpURL: onlineHelpURL
    };

    angular.module('app.sysSettings', []).constant("sysSettings", sysSettings);
})();  

, и я изменил его в машинописи, чтобы иметь возможность экспортировать его и повторно использовать настройки в моих файлах машинописи:

declare var angular: any;

let sysSettingsts = (function () {
    'use strict';
    var domainPath = "http://localhost:26264/";
    var reportAPI = "http://localhost:58629/";
    var onlineHelpURL = "http://localhost:8085/";
    var hh6ServiceUrl = "http://localhost:40100/";
    var sysSettings: any = {
        webServiceURL: domainPath,
        hh6ServiceUrl: hh6ServiceUrl,
        reportServiceURL: reportAPI,
        onlineHelpURL: onlineHelpURL
    };

    angular.module('app.sysSettings', []).constant("sysSettings", sysSettings);

    return sysSettings;
})();

export default sysSettingsts;

Но когда я пытаюсь импортироватьэтот файл:

import { Injectable } from '@angular/core';
import { TranslateLoader } from '@ngx-translate/core';
import { Observable } from 'rxjs/Observable';
import {HttpClient} from "@angular/common/http";
import {sysSettingsts} from "angular/sysSettings";

@Injectable()
export class CustomTranslateLoader implements TranslateLoader  {

  constructor(private http: HttpClient,
              private item: sysSettingsts) {
    this.item = item;
  }

  getTranslation(lang: string): Observable<any>{

var apiAddress = this.item.domainPath + "api/GlobalResources/?lang=" + lang;
return Observable.create(observer => {
  this.http.get(apiAddress, ).subscribe(res => {
      observer.next(res);
      observer.complete();
    },
    error => {
      console.log("cannot retrieve Global Resources");
    }
  );
});

}

Я могу видеть только значения в import {sysSettingsts} from "angular/sysSettings";файл, но конструктор аналитики, мой sysSettingsts не определен.

  constructor(private http: HttpClient,
              private item: sysSettingsts) {
    this.item = item;
  }

Я пытался использовать sysSettingsts непосредственно внутри метода, но значение также не определено ... Может кто-нибудь подскажет, как я могу экспортировать выполнение функциив машинописи или хотя бы дать представление о том, как я могу импортировать настройки из моего файла машинописи в другие файлы машинописи (сделать настройки многократно используемыми).

Спасибо

Ответы [ 2 ]

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

Файл, который вы хотите изменить, ничего не экспортирует, целью этого файла является побочный эффект (он изменяет внешний объект angular).Вы не хотите ничего делать с возвращаемым значением из файла, вы просто хотите, чтобы его код выполнялся.

Затем просто import 'your-file.ts'; и удалите окружающую самовыполняющуюся функцию

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

Измените или ваш синтаксис экспорта или импорта. Прямо сейчас они не совпадают.

При использовании экспорта по умолчанию:

export default sysSettingsts;

Соответствующий синтаксис импорта:

import sysSettingsts from "angular/sysSettings"

Обратите внимание на отсутствие скобок.


Или, если вы хотите сохранить тот же синтаксис импорта, используйте вместо этого обычный (не по умолчанию) экспорт:

export { sysSettingsts }

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

...