Я создаю расширение Chrome с помощью Angular4.
В одном из моих компонентов я устанавливаю значение текстовой области на значение, выбранное на вкладке Chrome.
Все выглядит как работает, но как только значение передается в мою переменную, вид плагина не обновляется.
Это мой код:
HTML:
<div class="container-fluid main">
<textarea name="selectedText" id="selectedText" [(ngModel)]="selectedText"></textarea>
<button (click)="getSelectedText()">Get the selected text</button>
TS:
import {Component, OnInit} from '@angular/core';
@Component({
selector: 'app-capture',
templateUrl: './capture.component.html',
styleUrls: ['./capture.component.css']
})
export class CaptureComponent implements OnInit {
selectedText = '';
constructor() {
}
ngOnInit() {}
getSelectedText() {
chrome.tabs.executeScript( {
code: 'window.getSelection().toString();'
}, (selection) => {
this.selectedText = selection[0];
console.log('the callback value is: ' + this.selectedText);
});
}
}
Что я пробовал:
Я добавил кнопку для запуска бесполезной функции, чтобы просто обновить вид:
HTML:
<button (click)="refresh()">Test button</button>
TS:
refresh() {
console.log('hello world');
}
Если я дважды нажму кнопку «Получить выделенный текст» или нажму кнопку «Получить выделенный текст», а затем «Кнопка проверки», я получу значение в моей области текста. Я не знаю, где ошибка или как я могу сказать angular, чтобы продолжать следить за моей привязкой данных.
Как получить правильное значение в моей текстовой области при нажатии только один раз на кнопку «получить выделенный текст»?
Кроме того, почему angular перестает наблюдать за моей переменной с моей привязкой данных? Это связано с Chrome?