Поскольку console.log действительно подтверждает, что в вашем случае данные действительно изменяются, а представление (шаблон) не получает обновления - это указывает на то, что обнаружение изменений не происходит.
Чтобы подтвердить, что вы сделалиуже попробуйте "взломать", и, по словам вас в комментариях, это сработало:
private onConnectionSuccess = (reason) => {
this.zone.run(() => {
setTimeout(() => {
this.isBluetoothConnected = true;
console.log("isBluetoothConnected---", this.isBluetoothConnected);
},0)
});
};
По сути, взлом "оборачивает" ваши изменения данных в асинхронное (setTimeout) действие, которое захватывает Angular.
Теперь для решения этой проблемы вы можете либо убедиться, что изменение данных в вашем случае происходит через событие, которое Angular получает естественным образом (например, добавить пользовательский даже прослушиватель).
Или попытаться использовать обнаружение изменений для обнаружения изменений вручную после изменения данных:
import CDR:
import { ChangeDetectorRef } from '@angular/core';
внедрить его:
constructor (private cdr: ChangeDetectorRef) {}
Добавить его в ваш метод:
private onConnectionSuccess = (reason) => {
this.isBluetoothConnected = true;
console.log("isBluetoothConnected---", this.isBluetoothConnected);
this.cdr.detectChanges();
};
Попробуйте этот подход какЯ думаю, что это будет лучше, чем взломать.