angular - Typescript'ten Javascript prototip fonksiyonunu çağırma


Bir Angular uygulamam var ve /app/asset/scripts dizininden dahil edilen birden fazla harici JavaScript dosyası var ve <script> etiketi ile çağırıldığında sorunsuz çalışıyor. Angular(.ts) üzerinden JavaScript fonksiyonunu çağırmaya çalışıyorum, ancak bir hata veriyor. İşte snippet:

src/app/asser/scripts/viewer.js

function MyView(x, y) {
  //other stuffs
  this.initView(x, y); <---- error here
}

MyView.prototype.initView = function(x, y) {
  console.log("initView");
}

src/app/viewer/viewer-component.ts

declare var MyView: any;

export class myComponent{
  constructor(){}
  init(){
    this.view = MyView(1000, 800);
  }
}

JS'ten initView çağrılırken aşağıdaki hatayı veriyor:

ERROR TypeError: this.initView is not a function
    at MyView (view.js:69)
    at RendererService.push.i2er.RendererService.SetupURL (viewer0.ts:31)

Bu hata nasıl çözülebilir?

Teşekkürler

Cevap #1

function MyView(x, y) {
  //other stuffs
  this.initView(x, y); <---- error here
}

MyView.prototype.initView = function(x, y) {
  console.log("initView");
}

MyView bir yapıcı (constructor) fonksiyondur.

this'i kullanmak için bunu new anahtar kelimesi ile çağırmalısınız

new MyView(2,2)

declare var MyView: any; kullanmana gerek olduğunu sanmıyorum