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> {{signinMessage}}<br >
<button id='test' (click)='onTestClick()'>test</button> {{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 ***/
});
});
}
我有一个简单的 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> {{signinMessage}}<br >
<button id='test' (click)='onTestClick()'>test</button> {{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 ***/
});
});
}