angular - Angular,如何在没有更改检测问题的情况下将值从 HTML 模板传递到组件
问题描述
我在尝试从 HTML 模板中检索值以进行计算时遇到问题;但是,我没有找到好的解决方案。当我在*ngFor
模板中添加一个方法时,它会导致可怕的更改检测问题,并且该方法被调用了 100 次。我也不能使用属性绑定,因为它在同一个组件中,而不是一个子组件。我正在遍历一个大型 JSON 对象数组,需要找到issueNumber
每个对象并调用一个新服务。以下是我如何处理更改检测问题的示例。这可能是一个简单的解决方案,但它打败了我。
谢谢大家。
HTML
<div *ngFor="let m of issues">
.....
{{findAdditionalIssues(m.issueNumber)}}
.....
</div
零件
findAdditionalIssues(issueNumber: any)
{
callnewservice.get(issueNumber).subscribe ()
}
解决方案
那么最好选择所有的issueNumber
,然后为它们中的每一个调用callnewservice.get()
. 您可以使用 aforkJoin
并行触发所有这些请求,订阅者将等待所有结果返回,然后再发出响应。
forkJoin[issues.select(m => callnewservice.get(m.issueNumber))]
.subscribe(additionalIssues => console.log(additionalIssues))
fork加入说明:
当您有一组可观察对象并且只关心每个对象的最终发出值时,最好使用此运算符。一个常见的用例是,如果您希望在页面加载(或其他事件)时发出多个请求,并且只想在收到所有人的响应时采取行动。通过这种方式,它类似于您使用 Promise.all 的方式。
推荐阅读
- html - Excel VBA 抓取 - HTML 表格不可见
- c++ - 致命错误:avr/io.h:没有这样的文件或目录
- python-3.x - 使用两对键创建字典/列表:具有迭代形式的值/项
- google-chrome - 如何定义将从本地存储(Chrome 扩展)中检索的变量?
- python - 列表中的Python求和值,如果它存在于另一个列表中
- spring-boot - Spring websocket消息代理添加额外的Access-Control-Allow-Origin标头来响应
- jquery - 选择选项未更新
- reactjs - 从状态更新多选选项不会触发 material_select 因此选项不会出现
- oauth-2.0 - 我应该将身份验证代码移动到访问令牌交换到 API 以实现 Web API/SPA OpenID Connect 吗?
- codeigniter - 无法链接到 codeigniter 中另一个页面上的锚点