Angular 2 + Typescript 显示函数内的变量

Angular 2 + Typescript displaying variable from within function

我对打字稿和 Angular 2 完全陌生,我在尝试输出到 Cordova / Angular 应用程序中的页面时遇到了一些问题。

页(book.html):

<ion-header>
  <ion-navbar>
    <button ion-button menuToggle>
      <ion-icon name="menu"></ion-icon>
    </button>
    <ion-title>Book</ion-title>
  </ion-navbar>
</ion-header>

<ion-content padding>
  <h3>Book</h3>

  <p>
    Book page.
  </p>
  <p>
    <span>{{ oBookingDebug }}</span>

  </p>

</ion-content>

代码 (book.ts):

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { InAppBrowser } from '@ionic-native/in-app-browser';

@Component({
  selector: 'page-book',
  templateUrl: 'book.html'
})
export class BookPage {
    public oBookingDebug: string = "";

    constructor(public navCtrl: NavController, public iab: InAppBrowser) {

        this.oBookingDebug="TEST"; // <-- WORKS AND SHOWS ON THE PAGE!!

        const browser = this.iab.create('http://**');
        browser.on("loadstop")
        .subscribe(
        () => {
            browser.executeScript(
            {
                code:'localStorage.getItem("bookingObject");'
            }).then(
                (oBooking)=>{
                    alert(oBooking); // Test
                    this.oBookingDebug="DAVE"; // <-- DOESNT WORK!!
                });
        },
        err => {
            console.log("InAppBrowser Loadstop Event Error: " + err);
        });

    }
}

如果您查看我的评论,您可以看到哪些有效,哪些无效,我如何访问页面以从 executescript 回调中输出,id 希望此时能够显示到页面但是也分配给一个变量供以后访问。

似乎 Angular 变化检测让你的生活变得艰难,试试这个:

import { ChangeDetectorRef } from '@angular/core'

constructor(private cdr: ChangeDetectorRef) {}

并在您的回调中:

(oBooking) => {
  this.oBookingDebug = 'DAVE';
  this.cdr.detectChanges();
});

这告诉 Angular 它应该检查是否有什么改变,以及是否有东西要在 DOM-树中渲染。 Here 你可以找到文档。