我正在开发chrome扩展程序,并尝试在插件内textarea中的选项卡上输出所选文本。

获取所选文本的功能效果很好,但是我无法将值设置为插件内的textarea元素。

问题:如何正确存储值,然后可以使用数据绑定将其传递到文本区域?

HTML:

<div>
    <p>Here will appear the selected text :</p>
    <textarea name="selectedText" id="selectedText" [(ngModel)]="selectedText"></textarea>
    <button (click)="getSelectedText()">Get the selected text</button>
</div>


TS:

export class CaptureComponent {
    selectedText = '';

    getSelectedText() {
        chrome.tabs.executeScript( {
            code: 'window.getSelection().toString();'
        }, function(selection) {
            this.selectedText = selection[0];
        });
    }
}


selection[0]正常工作,所以我想我尝试存储数据的方式不正确,但是我似乎找不到要更改的内容。

最佳答案

在您当前的方法中,this不引用您的组件。

更改您的回调以使用箭头功能保持范围:

getSelectedText() {
   chrome.tabs.executeScript( {
     code: 'window.getSelection().toString();'
     }, (selection) => {
       this.selectedText = selection[0];
    });
}

09-25 17:57