私はBLEスキャンを実行し、観察可能な部分を介して結果をページコンポーネントに流し込み、そこからローカル変数に格納されて表示されます(理論上は表示されます)。Angular 2とRxJSはタイムアウト時にのみ更新可能
setInterval
メソッドからの更新によってビューが更新されるのに対して、startScanWithOptions
メソッドからの更新ではビューが更新されないという問題があります。すべての更新がコンソールに書き込まれていて、setInterval
更新がレンダリングを引き起こすまで表示されないため、ページコンポーネントに更新が行われています。ページコンポーネントから
start() {
this.connections$ = new Observable((observer) => {
if (this.blePlugin) {
this.blePlugin.startScanWithOptions(
[],
{ reportDuplicates: true },
(result) => this.observableScanResult(result, observer)
);
}
setInterval(()=>{this.observableScanResult({rssi: 100}, observer)}, 1000);
});
return this.connections$;
}
private observableScanResult(result, observer) {
observer.next(result);
}
:注射用サービスから
private startSelection() {
console.log('Scan Starting');
this.connectionSource = this.connection.start();
this.connectionSub = this.connectionSource.subscribe((result) => {
this.test.push(result.rssi);
console.log(this.test);
});
}