我有一个组件,我们称它为组件A,在一个模块中,但在应用程序根组件模板中使用此组件。此组件A使用另一个组件显示一个按钮元素-让我们称其为组件B。
在组件A的模板中有组件B和另一个组件--让我们称之为组件C。组件C有*ngIf="show“。
组件A的类声明有一个action方法--让我们调用这个方法fetch()以及*ngIf的show属性。show属性设置为false。然后将fetch()方法传递到组件B(按钮组件),在组件B上(单击)调用该方法。
在fetch方法中,我将show从false更改为true。令我惊讶的是,我注意到当单击此按钮组件时,在组件A的类声明中,显示属性将更改为true,但不会在ngIf的模板中选取。
当我调试它不工作的原因时,我在组件B下面添加了一个button元素,并添加了(click)="fetch()“。
这是成功的,并且更改检测起作用了。
令我惊讶的是,当我将fetch方法传递给组件B调用时,更改检测不起作用,但当我使用模板中添加的按钮调用同样的方法时,它就起作用了。
从版本5/6开始,我就没有使用过angular了,我才刚刚开始使用它。
下一步是尝试将show属性设置为类的静态属性。
我本以为最初的实现不需要使用button元素就可以工作,但为什么它不工作呢?
组件B也属于不同的模块,并且与组件A不属于同一模块。
下面是上面的图像
发布于 2019-02-18 15:31:11
事实证明,这就是“这个”的背景。它引用的是调用回调的组件,而不是定义方法的父组件。
因此在上面的注释中,在父组件中将其更改为fetch = () => { ... }
。
https://stackoverflow.com/questions/54727005
复制相似问题