Observable events in combination with Bluetooth require ApplicationRef.tick()


I have a working example where bluetooth devices are discovered and then data is sent and received.

Can someone explain why in the following part the first devices array is getting a visual update and the other raw data array not?

The second update where data is received requires ApplicationRef.tick() in order to get updated correctly.


<ion-content padding>

		Bluetooth devices
		<ion-item *ngIf="!devices">
		<button ion-item *ngFor="let device of devices"
		<ion-item *ngFor="let r of raw">



export class BtExplorerPage implements OnInit {

	public devices: Array<{name: string, address: string}>;
	public raw: Array<string> = [];

		private bluetoothSerial: BluetoothSerial,
		private applicationRef: ApplicationRef) { }

	public ngOnInit() {
		.subscribe((list: any) => {
			this.devices = list;
	public deviceSelected(device: {name: string, address: string}) {
		Observable.fromPromise(this.bluetoothSerial.enable()).flatMap(() => {
			return this.bluetoothSerial.connect(device.address);
		}).subscribe(() => {
			// wait for data line from server
			this.bluetoothSerial.subscribe("\n").subscribe((data) => {
				this.raw.push(data); /***this.applicationRef.tick();***/
			// send command to server, server responds with data line