2017-02-06 4 views
0

Angular2 프로젝트에 네이티브 javascriptlibrary을 사용하고 싶습니다. 나는 그것을 구축하고 번들 된 js 파일을 만들었습니다. 이제이 파일에서 fhir이라는 클래스 하나만 있으면됩니다. 새로운 javascript 클래스를 만들고 그것에 fhir 클래스의 인스턴스를 만들려고했습니다. 그 후, 나는 내 자신의 기능에 해당 인스턴스에서 함수를 호출하고 있습니다 :Angular2에서 javascript 클래스 사용

/// <reference path='./FhirClient.d.ts' /> 

import { fhir } from './nativeFhir'; 

export var FhirClient = (function() { 

    function FhirClient(config) { 
     this.client = fhir(config); 
    } 

    FhirClient.prototype.conformance = function(query) { 
     return this.client.conformance(query); 
    }; 
    FhirClient.prototype.document = function(query) { 
     return this.client.document(query); 
    }; 
    FhirClient.prototype.profile = function(query) { 
     return this.client.profile(query); 
    }; 
    FhirClient.prototype.transaction = function(query) { 
     return this.client.transaction(query); 
    }; 
    FhirClient.prototype.history = function(query) { 
     return this.client.history(query); 
    }; 
    FhirClient.prototype.typeHistory = function(query) { 
     return this.client.typeHistory(query); 
    }; 
    FhirClient.prototype.resourceHistory = function(query) { 
     return this.client.resourceHistory(query); 
    }; 
    FhirClient.prototype.read = function(query) { 
     return this.client.read(query); 
    }; 
    FhirClient.prototype.vread = function(query) { 
     return this.client.vread(query); 
    }; 
    FhirClient.prototype.delete = function(query) { 
     return this.client.delete(query); 
    }; 
    FhirClient.prototype.create = function(query) { 
     return this.client.create(query); 
    }; 
    FhirClient.prototype.validate = function(query) { 
     return this.client.validate(query); 
    }; 
    FhirClient.prototype.search = function(query) { 
     return this.client.search(query); 
    }; 
    FhirClient.prototype.update = function(query) { 
     return this.client.update(query); 
    }; 
    FhirClient.prototype.nextPage = function(query) { 
     return this.client.nextPage(query); 
    }; 
    FhirClient.prototype.prevPage = function(query) { 
     return this.client.prevPage(query); 
    }; 
    FhirClient.prototype.resolve = function(query) { 
     return this.client.resolve(query); 
    }; 

}); 

그리고이 클래스에 대한 .d.ts 파일 생성 : 그러나

import { fhir } from './nativeFHIR'; 

export declare class FhirClient { 
    private client: fhir; 

    constructor(config: any); 

    conformance(query: any): any; 
    document(query: any): any; 
    profile(query: any): any; 
    transaction(query: any): any; 
    history(query: any): any; 
    typeHistory(query: any): any; 
    resourceHistory(query: any): any; 
    read(query: any): any; 
    vread(query: any): any; 
    delete(query: any): any; 
    create(query: any): any; 
    validate(query: any): any; 
    search(query: any): any; 
    update(query: any): any; 
    nextPage(query: any): any; 
    prevPage(query: any): any; 
    resolve(query: any): any; 

} 

을, 나는에 대한 .d.ts 파일을 작성하지 않았다 라이브러리를 사용하고 있습니다.

error

이 : 그 클래스의 인스턴스에서 함수를 Angular 내 클래스 (FhirClient)를 가져오고 전화를 시도

,

this.client = new FhirClient(env.environment.server.config); 
    this.client.search({type: 'Patient', id: 'pa000001'}).then(function (response) { 
     console.log(response); 
    }, function (error) { 
     console.log(error); 
    }); 

그것은 ... is not a function 오류를 제공 .d.ts 파일을 사용하려고 시도한 것은 처음이며 아마도 완전히 잘못 사용하고있을 것입니다. 내 Angular 프로젝트의 기본 라이브러리에있는 fhir 클래스를 사용하도록 도와 줄 수 있습니까?

내 보낸 클래스 (예, 당신이 인생을 필요로하고 마지막에 클래스를 반환) :

+0

이 라이브러리에서 사용할 수있는 입력을 찾지 못하셨습니까? –

+0

어쩌면 틀 렸지만 IIFE로 마무리해야한다고 생각합니다. 현재 당신은 함수를 실행하지 않습니다 :'export var FhirClient = (function() {...})()'. '()'을 잊었습니다. 아니면 당신의 필요'새로운 FhirClient()()' – VadimB

+0

@ VadimB 당신이 말한 것처럼 그것을 시도한 지금은 오류가 '__WEBPACK_IMPORTED_MODULE_5__FhirJS_FhirClient __. a is not a constructor' –

답변

0

내 경우에 작동하기 때문에,이 솔루션을 시도

import { fhir } from './nativeFhir'; 

export var FhirClient = (function() { 

    function FhirClient(config) { 
     this.client = fhir(config); 
    } 

    FhirClient.prototype.conformance = function(query) { 
     return this.client.conformance(query); 
    }; 
    FhirClient.prototype.document = function(query) { 
     return this.client.document(query); 
    }; 
    FhirClient.prototype.profile = function(query) { 
     return this.client.profile(query); 
    }; 
    FhirClient.prototype.transaction = function(query) { 
     return this.client.transaction(query); 
    }; 
    FhirClient.prototype.history = function(query) { 
     return this.client.history(query); 
    }; 
    FhirClient.prototype.typeHistory = function(query) { 
     return this.client.typeHistory(query); 
    }; 
    FhirClient.prototype.resourceHistory = function(query) { 
     return this.client.resourceHistory(query); 
    }; 
    FhirClient.prototype.read = function(query) { 
     return this.client.read(query); 
    }; 
    FhirClient.prototype.vread = function(query) { 
     return this.client.vread(query); 
    }; 
    FhirClient.prototype.delete = function(query) { 
     return this.client.delete(query); 
    }; 
    FhirClient.prototype.create = function(query) { 
     return this.client.create(query); 
    }; 
    FhirClient.prototype.validate = function(query) { 
     return this.client.validate(query); 
    }; 
    FhirClient.prototype.search = function(query) { 
     return this.client.search(query); 
    }; 
    FhirClient.prototype.update = function(query) { 
     return this.client.update(query); 
    }; 
    FhirClient.prototype.nextPage = function(query) { 
     return this.client.nextPage(query); 
    }; 
    FhirClient.prototype.prevPage = function(query) { 
     return this.client.prevPage(query); 
    }; 
    FhirClient.prototype.resolve = function(query) { 
     return this.client.resolve(query); 
    }; 

    return FhirClient; 
})(); 

사용법 :

this.client = new FhirClient(env.environment.server.config); 
+0

마지막으로 시도한 형식은 '예외 : Uncaught (약속 있음) : TypeError : __webpack_require __.'(main.bundle.js에서 i (...)가 함수가 아닙니다. '오류입니다. 'main.bundle.js'를 보면이 줄은'this.client = __webpack_require __. i (__ WEBPACK_IMPORTED_MODULE_0__nativeFhir __ [ "fhir"]) (config);'입니다. 그것은'this.client = fhir (config);이어야합니다. 'js 파일에서 행. 문제는'fhir' 클래스를 어떻게 가져 왔는지입니다. –

+0

이 클래스를 어떻게 가져 옵니까? 'import {FhirClient} from "..."; – VadimB

+0

아니,'nativeFHIR.js'에서'fhir'을 가져온 것을 의미합니다 :'import {fhir} from './ nativeFhir ';' –