angular - 模板不知道窗口中更新的变量的变化
问题描述
视图无法更新status
变量的值。
这是我的代码的摘录删除了不相关的代码:
组件.ts
export class MyComponent implements OnInit {
private status: string;
ngOnInit() {
this.status = "abc"; // OK binding
window['onYouTubeIframeAPIReady'] = (e) => {
this.player = new window['YT'].Player('player', {
videoId: this.video.videoId,
events: {
'onStateChange': this.onPlayerStateChange.bind(this)
}
});
};
}
onPlayerStateChange(event) {
switch (event.data) {
case window['YT'].PlayerState.PLAYING:
this.status= "xyz"; //Not possible binding
break;
}
组件.html
<span>{{status}}</span> // it shows only abc, the expected is xyz
任何人都知道如何更新变量window
并反映在视图上?
解决方案
我完全改变了我以前的答案,因为在你的情况下这似乎不是问题
我不确定为什么属性没有更新,template
但值在ts
- 可能是window
我认为的功能问题
经过一些研究,我手动触发了更改onPlayerStateChange(event)
注入ChangeDetectorRef
你的构造函数
constructor(private dect: ChangeDetectorRef){}
属性更改后添加this.dect.detectChanges();
- 查看下面的代码
onPlayerStateChange(event) {
switch (event.data) {
case window['YT'].PlayerState.PLAYING:
this.name = "yyy";
this.dect.detectChanges(); //this will manually trigger the changes on your properties
console.log("I'm playing");
break;
};
}
希望它可能有效,解决方案可能不是传统方式,但您可以将其用作解决方法 - 快乐编码:)
推荐阅读
- python - 如何将连接的列插入到熊猫中的数据透视表中
- vba - 在 MS word 中使用宏,我尝试使用宏来截取屏幕截图,但我能够全屏而不是特定区域
- javascript - 如何通过 React js 中的普通代码使用/创建通知/toastr?
- java - 使用 Java 重置 json 对象中的数据的建议
- python - 在python中抓取许多url的数组
- html - 当我放 flex-grow= 1 时,为什么图像(来自 fontawesome)从文本中移开
- python - 如何使枚举指向一个类
- reactjs - 如何在一个 useEffect 反应中更新多个状态?
- flutter - 从 Flutter 登录 google 时,帐户选择器后没有任何反应
- html - 响应性/左边距