логическое значение в Angular2 viewmodel не обновляет шаблон * ngIf

У меня странное поведение, с которым мне нужна помощь. Это приложение angular2 и машинописный текст.

У меня есть шаблон, содержащий следующий HTML-код, который использует ngIf :

<div *ngIf="loading" class="row">
        <div class="small-3 small-centered columns"  >
            <img src="/Images/loading_spinner.gif" />
        </div>
    </div>

У меня есть кнопка, которая запускает функцию изменения значения загрузки

export class ShiftEditComponent implements OnInit {

    loading: boolean = false;

    setLoading(value: boolean): void {
        if (this.loading !== value) {
            this.loading = !this.loading;
        }
    }
}

Вот странная вещь. Если я указываю значение параметра value откуда-то еще в классе, шаблон не обновляется. НО , если я удаляю логику и просто назначаю загрузку ее противоположности, тогда она работает, и шаблон обновляется, а ngIf отображается и не отображается соответствующим образом.

ЭТО РАБОТАЕТ:

    setLoading(): void {
            this.loading = !this.loading;
    }

Вопрос: Почему это работает, и ngIf обновляется, когда я просто назначаю противоположное значение, но если я пытаюсь указать значение через параметр, шаблон ngIf не обновляется (показывать или скрывать)

7 голосов | спросил J King 20 AMpWed, 20 Apr 2016 07:54:37 +030054Wednesday 2016, 07:54:37

1 ответ


0
  

Если я указываю значение параметра value откуда-то еще в классе, шаблон не обновляется

Распространенный признак того, что у вас неправильный this в этом обработчике

Fix

Используйте функцию стрелки https://basarat.gitbooks.io/машинописный /содержание /документы /стрелка-functions.html

ответил basarat 20 AMpWed, 20 Apr 2016 08:43:44 +030043Wednesday 2016, 08:43:44

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132