Angular:将方法作为 Angular 中的参数传递

标签 angular parameters anonymous-function pdftron

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

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;
      }
    });
  }

现在我也声明并初始化这个匿名方法,如下

highlightText(quads): any {
    debugger;
    const viewerWindow = this.webviewerComponent.getWindow();
    var docViewer = this.getReaderControl().docViewer;
    var am = docViewer.getAnnotationManager();
    let anf = am.getAnnotationsList();
    var firstChar = quads[0];
    var lastChar = quads[quads.length - 1];
    var firstx = (firstChar.x1 + firstChar.x2) / 2;
    var finalx = (lastChar.x3 + lastChar.x4) / 2;
    var y = (firstChar.y1 + firstChar.y4) / 2;
    var topLeft = { x: firstx, y: y, pageIndex: this.pageNum };
    var bottomRight = { x: finalx, y: y, pageIndex: this.pageNum };

    var annot = new viewerWindow.Annotations.TextHighlightAnnotation();
    annot.setPageNumber(this.pageNum);
    annot.StrokeColor = new viewerWindow.Annotations.Color(0, 255, 255);
    am.addAnnotation(annot);

    var textHighlightTool = new viewerWindow.Tools.TextHighlightCreateTool(docViewer);
    textHighlightTool.annotation = annot;
    textHighlightTool.pageCoordinates[0] = topLeft;
    textHighlightTool.select(topLeft, bottomRight);

  }

现在,当我们运行应用程序时, this.highlightText() 方法显示为未定义。 那么你能告诉我如何在函数内传递匿名函数作为 angular4 中的参数吗?

谢谢

马诺吉·古普塔

最佳答案

您需要使用像这样的箭头函数 doc.loadPageText(3, (text) => {})

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

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

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;
      }
    });
  }

关于Angular:将方法作为 Angular 中的参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51890053/

相关文章:

angular - 你如何从 Angular 4 的父组件继承模板?

javascript - Angular 4 : window:scroll works but not scroll listener on image

http - angular 2 (ng2-completer)-避免从组件在服务中注入(inject) http 依赖项

javascript - 在 Angular 2 中渲染页面时如何使用加载器?

c# - 为什么不能将属性作为 out 参数传递?

JAVA随机参数总是返回0

c# - 在函数中使用匿名事件

javascript - 如何使用 load-grunt-config 将参数传递给外部文件中定义的 grunt 任务?

javascript - 从异步调用访问成员方法

c# - 在 C# 中将匿名方法/函数作为参数传递