Javascript / Angular: таймаут в функции не работает с логическим значением - PullRequest
0 голосов
/ 23 февраля 2019

В представлении у меня есть это условие:

    <h3 *ngIf="show">{{users.result}}</h3>

В логике TypeScript у меня есть:

show=false; <----as a property

И следующая функция:

timeOut(seconds: number, value:boolean) {
   value = true;      
    setTimeout(
      function() {
        value = false;
      }.bind(this),
      seconds
    );
  }

Но когда я это называю, вот так:

console.log(this.timeOut(3000, this.show));

свойство this.show становится неопределенным, но секунды передаются в качестве аргумента.Я что-то упускаю и не могу понять, что ... Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 23 февраля 2019

Как я вижу:

  • Прежде всего вы ведение журнала консоли функция вызов без результата .
  • Когда вы передаете логическое значение в параметры функции, оно копируется , поэтому при изменении значениявнутри функции она не влияет на внешнюю переменную / поле.
  • Это очень специализированный вариант использования, поэтому вам не нужно извлекать его в другую функцию.

Мое предложение - просто поместите setTimeout вызов с функцией стрелки в метод некоторого компонента, например ngAfterViewInit или в метод обработчика события :

ngAfterViewInit() {
   setTimeout(() => this.show = true, 3000)
}

Надеюсь, это поможет.

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