【发布时间】:2023-05-07 11:08:01
【问题描述】:
从 8 升级到 9 后,html 中的异步逻辑不再起作用。
喜欢这个
本期结束 https://github.com/angular/angular/issues/34405 在常春藤指南上 https://next.angular.io/guide/ivy-compatibility .
如果你使用它,它现在会抛出一个错误。
无法将值“$event”分配给模板变量“applicationsList”中的错误。模板变量是只读的。
我认为这不是反模式,因为您可以使用它轻松处理变更检测。
我现在的问题:
替换这种代码以消除错误的最佳做法(优雅方式)是什么?
我知道可以改用 promise,但这真的是最好的方法吗?:
.ts
this.applicationsList = await this.applicationApi.getList().toPromise();
.html
编辑:
如果您在开发控制台中看到错误,这里是 Stackblitz:
-
模式本身看起来并没有错。你能在 stackblitz 中重现这个问题吗?
-
试试这个,在后面的代码中订阅异步调用。将调试器语句放入订阅中。注释掉 html 代码。放入新的 div 中没有任何内容。重新启动导航,然后告诉我们按 f12 进行调试后会发生什么。您应该看到断点命中。你看到了什么价值观?
-
另外,正如 GitHub 问题中所述,
[(applicationsList)]="applicationsList"
可能是错误的来源,而不是使用async
管道。 -
我已经将GitHub issue cmets中的stackblitz升级到Angular v9,模式本身的使用还可以。 stackblitz.com/edit/ng-issue-34405-ppcbhy 该问题的现场演示将使该问题受益。
-
@KurtHamilton 您的 stackblitz 版本为 8 。我用错误更新了我的答案