Angular - ngModel не обновляется, пока я не нажму на textarea - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть всплывающее окно google-chrome с текстовым полем. Когда пользователь вводит текстовое поле, текст сохраняется в chrome локальном хранилище. Когда всплывающее окно закрывается и затем снова открывается, текстовое поле должно автоматически заполняться последним сохраненным текстом. Он работает отлично, за исключением того, что когда я закрываю и открываю всплывающее окно, текстовое поле кажется пустым и не заполняется автоматически, пока я не нажму на текстовое поле. Я знаю, что значение изменяется прямо при открытии всплывающего окна, поскольку оно регистрируется в консоли, я просто не вижу изменения, пока не нажму. Любая идея, что я делаю неправильно?

app.compon enet. html

<div>

  <mat-form-field>
    <mat-label>Input</mat-label>
    <textarea matInput [(ngModel)]='myText' (ngModelChange)="saveChanges()"></textarea>
  </mat-form-field>

</div>

app.component.ts

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  ngOnInit() {this.restore()};

  title = 'dataStoreTest';
  myText = '';

  saveChanges() {
    chrome.storage.local.set({storedText: this.myText});
    console.log('save');
  }

  restore(){
    let self = this;
    chrome.storage.local.get( ['storedText'], function(result){
      self.myText = result.storedText;
      console.log(result.storedText +' Was restored');
    });
  }

}

1 Ответ

0 голосов
/ 04 апреля 2020

Я до сих пор не уверен, почему это произошло, но это было решено вместо этого с использованием localStorage и НЕ chrome .storage.local-

фиксированный код -

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  ngOnInit() {this.restore()};

  title = 'dataStoreTest';
  myText = '';

  saveChanges() {
    localStorage.setItem('storedText', this.myText);
    console.log('save');
  }

  restore(){
      this.myText = localStorage.getItem('storedText');
      console.log(localStorage.getItem('storedText') +' Was restored');
  }

}


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...