我创建了一个使用NativeScript
构建的Angular 2应用程序的简短示例,我期望变量foo
在开头是“foo”,然后是ngOnInit()
第一次更改它是“bar”然后承诺返回,我应该在Label中看到“foobar”,但我看到“bar”。
正如我在日志中看到的那样执行:
JS: afterBar
JS: promise new
JS: promise than
component.ts
foo:String="foo";
ngOnInit() {
this.foo = "bar";
console.log("afterBar");
var promise = new Promise((resolve)=>{
resolve(42);
console.log("promise new");
});
promise.then(x=> {
this.foo="foobar";
console.log("promise than");
});
}
应用视图:
<Label [text]='foo'></Label>
如何更改承诺中的标签文本并将其“刷新”到应用视图中?
解决:
我通过强制更新来解决问题
import { ChangeDetectorRef } from '@angular/core';
[...]
constructor(
[...],
private ref: ChangeDetectorRef) {
}
[...]
this.ref.detectChanges();