angular - 如何创建和更新可观察对象,这取决于 @Input
问题描述
一个简单的组件有一个输入(即criteria
)和一个可观察的(即result$
)。
class Foo {
@Input()
private criteria: string;
private result$: Observable<any>;
constructor(private service: MyService) { }
}
MyService 类提供了一个方法,该方法使用criteria
并返回用于 set/update 的 observable result$
。
service.fetchResult(criteria: string): Observable<any>
使用此服务创建可观察对象的最先进方法是什么。最重要的要求是:
- 同样,当输入(即
criteria
)稍后被修改时,新值应用于更新可观察对象(即result$
)。
解决方案
与set
:
_criteria: Criteria; // set local variable if this input needed elswhere
@Input()
set criteria(c: Criteria) {
this.service.someMethod(c);
this._criteria = c;
}
与OnChanges
:
ngOnChanges(changes: SimpleChanges) {
let criteria = changes.criteria;
if(criteria && criteria.currentValue !== criteria.previousValue){
this.service.someMethod(criteria);
}
}
推荐阅读
- rasa-nlu - 如何从命令行与 rasa 助手交互?
- python - 在 Python 中遍历嵌套字典
- r - R - 跨年的累积和
- list - 在 Scala 中组合减法和过滤器
- python - Django 下载文件
- prometheus - Prometheus 从 InfluxDB 远程读取不返回任何数据
- java - 如何在单独的 docker Hazelcast 节点(嵌入在应用程序中的主节点)禁用数据的反序列化过程
- java - 为什么在使用 Gson.asString 时出现 java.lang.UnsupportedOperationException?
- python-3.x - 日志未显示在 AWS Cloudwatch 中
- sql - 如何修复 SQL Server 中的错误编码?