当使用 DtQuickFilter 组件并将过滤器数组传入 [filters] 输入时,该组件不会像 DtFilterField 那样按要求做出反应。
DtQuickFilter 组件应该对传入 [filters] 输入的过滤器做出适当的反应。 然后应该触发 (filterChanges) 事件。
DtQuickFilter 组件接受传递给 [filters] 的过滤器,但不会触发事件处理程序,并且控制台还会显示 ExpressionChangedAfterItHasBeenCheckedError。
谢谢!
阿诺
嘿@areknow感谢您提供复制示例并打开问题。
我想事件没有被触发是设计的 - 因为你已经设置了过滤器,你知道它们改变了 - 因此我们不会在设置输入后立即触发事件。 我们只在用户与组件交互时触发事件。 但在这种情况下我可能是错的@lukasholzer你肯定知道更多:)
关于 ExpressionChangedAfterChecked 错误 - 这绝对是我们需要检查的。
此时我们假设这是在 viewEngine 中运行时出现的问题。
我们试图在我们的开发和演示应用程序中重现它,但没有成功。 我们无法在 stackblitz 之外重现该问题。
@areknow您能否确认您注意到此问题的应用程序正在 viewEngine 中运行(我们知道 stackblitz 正在运行 viewEngine)?
@ffriedl89当然有道理,感谢您对事件处理程序的解释!
@gselltho我可以确认我的应用程序正在使用 viewEngine。
谢谢你们!
@tomheller我刚刚在我的应用程序中启用了 Ivy,但我仍然看到 ExpressionChangedAfterChecked 错误。 也许还有其他事情发生?
另一个有趣的更新:错误只发生在我本地。 通过我们的管道 (jenkins) 在开发中构建它后,错误在开发环境中不可见。
在本地我做了一个完整的npm ci
但我仍然看到错误。 是否还有其他缓存需要清除?
谢谢!
@areknow您可以尝试使用 AOT 在本地构建应用程序吗? (提前编译)。 您可以通过将angular.json
的aot
属性设置为 true 或将--aot
传递给ng serve ...
命令来启用此功能。
我认为这是一个 JIT(及时)编译问题——这应该是您在开发环境中看不到它的原因。
一般来说,从版本 9 开始,您应该使用 AOT 进行编译:
https://angular.io/guide/aot-compiler#choosing -a-compiler
作为记录,还有一个呼叫同步计划来进一步调查这个问题。 感谢@areknow进行设置。
@areknow您可以尝试使用 AOT 在本地构建应用程序吗? (提前编译)。 您可以通过将
angular.json
的aot
属性设置为 true 或将--aot
传递给ng serve ...
命令来启用此功能。我认为这是一个 JIT(及时)编译问题——这应该是您在开发环境中看不到它的原因。
一般来说,从版本 9 开始,您应该使用 AOT 进行编译:
https://angular.io/guide/aot-compiler#choosing -a-compiler
@lukasholzer感谢您的回复!
我尝试将aot: true
到 angular.json 中的 serve 构建配置,我还尝试将--aot
标志添加到 serve 命令。 我还是在本地看到错误😅
这真的变得很奇怪。 我们也在我们的开发应用程序中尝试了ivy: on|off
和viewEngine: on|off
所有可能排列,但我们仍然无法重现错误。 但是我们可以在 stackblitz 中看到这一点,并且对为什么会发生这种情况感到非常困惑。 我期待着我们的电话@areknow。 也许如果我们齐心协力,我们就能弄清楚这里发生了什么。
@tomheller听起来不错!
@tomheller我能够在一个新项目中重现这个问题: https :
还是很高兴在我们预定的时间见面👍
感谢@areknow,我们能够在他提供的设置中找到问题的根源。 不幸的是,我们仍然无法在存储库中的任何应用程序中重现它,这有点令人担忧。