Привязка данных не обновляется, когда переменная в расширении Chrome - PullRequest
0 голосов
/ 30 апреля 2018

Я создаю расширение 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?

...