cordova app angular 2 成员变量更新不更新对它的模板引用

cordova app angular 2 member variable update not updating template reference to it

我有一个简单的 cordova 应用程序 angular 2 测试,其中 @Component 修饰的 AppComponent class 成员变量在按钮单击方法启动时更新,稍后当我为它调用的 promise 启用方法登陆回调时更新.

根据入门教程,@component 模板中引用了该成员变量。

我发现的是,当我 debug/test 在 ripple 模拟器 [ / chrome ] 中时,第一个成员变量更新在视图模板中呈现,但第二个成员变量没有呈现。相反,当我 debug/test 在 android 模拟器、windows 移动/uwp 模拟器和 windows x64/uwp 应用程序中时,第一个成员变量更新不会在视图模板中呈现,但是第二个。

在调试器控制台中,我确认模板中引用的成员变量更新确实出现了。

可以使用 https://github.com/myusrn/acu6withng2 重现 |测试按钮处理并使用当前的 ng2.0.0-beta.8 进行重现。

这是我认为与该回购协议中的来源最相关的摘录。

@Component({
    selector: 'my-app',
    //template: '<h1>Welcome page for {{message}}</h1>',
    template: `
    <button id='signin' (click)='onSignInClick()'>sign-in</button>&nbsp;&nbsp;{{signinMessage}}<br >
    <button id='test' (click)='onTestClick()'>test</button>&nbsp;&nbsp;{{testMessage}}`,
    //providers: [<list of dependency injection providers you want to override or set at this component scope>]
})
export class AppComponent {
    //message: string;
    signinMessage = '';
    testMessage = '';

    // onSignInClick() {  // repros whether i define as method
    onSignInClick = () => {  // and when defined as member function
        this.signinMessage = 'starting signin . . .';  /*** problem area ***/
        this.authService.getAccessToken().then(accessToken => {
            this.signinMessage = 'success';  /*** problem area ***/
        });

    // onTestClick() {  // repros whether i define as method
    onTestClick = () => {  // and when defined as member function
        this.testMessage = 'starting test . . .';  /*** problem area ***/

        this.ping().then(result => {
            this.testMessage = 'success';  /*** problem area ***/
        });     
    }


这听起来像是与可能出现的已知解决方法有关的问题吗?

有关详细信息,请参阅

   constructor(private zone:NgZone);

   onSignInClick = () => {  // and when defined as member function
     this.signinMessage = 'starting signin . . .';  /*** problem area ***/
     this.authService.getAccessToken().then(accessToken => {
       zone.run(() => {
         this.signinMessage = 'success';  
       });
     });

   // onTestClick() {  // repros whether i define as method
   onTestClick = () => {  // and when defined as member function
     this.testMessage = 'starting test . . .';  /*** problem area ***/

     this.ping().then(result => {
       zone.run(() => {
         this.testMessage = 'success';  /*** problem area ***/
       });
     });     
   }