【发布时间】:2019-12-11 01:19:45
【问题描述】:
我有一个事件触发了组件中的一个函数:
componentA.ts
html = 'hey';
this.onElementSelected(r => this.change());
public change() {
console.log(this.html);
if (this.html === 'hey') {
this.html = 'oh, hello!';
console.log(this.html);
} else {
this.html = 'hey';
}
}
componentA.html
这是相关模板的代码:
<div *ngIf="html">{{html}}</div>
我可以通过 console.log() 看到 html 变量发生了变化,但它在模板中没有变化。 如何更新模板?请不要建议在模板中这样使用按钮:
<button (click)="change()">Change</button>
我已经对此进行了测试并且它可以工作,但我需要由组件本身触发更改事件。
感谢您的帮助。
【问题讨论】:
-
什么是
this.onElementSelected? -
这可能是由于您的示例代码中没有的更改。你能试着在这里重现这个问题吗? stackblitz.com/edit/angular-bepvmn
-
@ExplosionPills 这是一个由点击我在页面中的工具触发的事件..
-
@ExplosionPills 对不起我的错误。如您所见,使用 onInint 可以正常工作。问题是当我在页面上拥有的这个工具调用函数 change() 时。情况难以重现……工具由组件本身显示并触发事件。其中一个事件触发函数 change()..so 变量更改,但我认为视图已经上传到 onInint..所以它没有检测到更改..
标签: angular typescript templates view