角度:将方法作为角度中的参数

时间:2018-08-17 07:05:48

标签: angular parameters anonymous-function pdftron

我创建了一个需要匿名方法作为参数的方法。 如下

BasicDatasource

现在我也按如下方式声明和初始化此匿名方法

getannotationContent(): any {
    var searchString = 'cash';
    var strLength = searchString.length;
    var doc = this.getReaderControl().docViewer.getDocument();
    let data = doc.searchText('cash', 'CaseSensitive,WholeWord');
    doc.loadPageText(3, function (text) {
      var start = 0;
      var index;
      while ((index = text.indexOf(searchString, start)) !== -1) {
        doc.getTextPosition(3, index, index + strLength,
          this.highlightText);
        start = index + strLength;
      }
    });
  }

现在,当我们运行应用程序时,this.highlightText()方法显示为未定义。 所以请您告诉我如何在函数内部将匿名函数作为angular4中的参数传递。

谢谢

Manoj Gupta

1 个答案:

答案 0 :(得分:2)

您需要使用类似doc.loadPageText(3, (text) => {})的箭头功能。

您在this中的this.highlightText引用了错误的范围。

因此用以下代码替换您的函数定义:-

getannotationContent(): any {
    var searchString = 'cash';
    var strLength = searchString.length;
    var doc = this.getReaderControl().docViewer.getDocument();
    let data = doc.searchText('cash', 'CaseSensitive,WholeWord');
    doc.loadPageText(3, (text) => {
      var start = 0;
      var index;
      while ((index = text.indexOf(searchString, start)) !== -1) {
        doc.getTextPosition(3, index, index + strLength,
          this.highlightText);
        start = index + strLength;
      }
    });
  }