【发布时间】:2018-01-08 10:13:26
【问题描述】:
我正在使用 Angular2 并在页面上显示一个变量。该页面有一个按钮,我单击它并调用数据服务。在 dataservice 调用中,我更改了变量的值,并希望更改会反映在页面上。但是,我仍然看到旧值。只有当我单击另一个链接然后返回此页面时,我才能看到反映的新值。我在数据服务调用之外对变量所做的任何更改都会立即反映出来。只有 dataservice 调用中的变化没有反映:下面是一些代码 sn-p:
HTML 模板:
<button type="button" class="btn (click)="clickNextButton()">
<span>save</span>
</button>
{{text}}
打字稿类
export class ConfigComponent implements OnInit {
public text = '';
..
..
private clickNextButton(): void {
this.text = 'abc;
this.dataService.getConfig()
.then((config: IConfig): void => {
console.log('printed');
this.text = 'xyz';
console.log('printed..');
});
}
}
所以,我单击按钮,页面上的值更改为 abc,但它没有更改为 xyz。控制台日志打印得很好,所以我确定已经到达了代码。为什么我对 dataservice 调用中的变量所做的更改没有反映在页面上?我该如何解决这个问题?
更新:
只有当组件被包含并在另一个组件中使用时才会出现此问题,如:
<prod-setup
....
</prod-setup>
当我在主组件的 dataService 调用中更改变量值时,它会更改并在视图上很好地反映。只有当我更改包含组件的数据服务调用中的变量时,它才不会反映在 UI 上。有什么想法吗?
【问题讨论】:
-
使用 chrome 调试工具获取有关行为的更多信息。
-
尝试在
console.log('printed..');之后添加resolve();
标签: angular typescript angular2-template