Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回取决于可观察值的值的最佳和最干净的方法_Javascript_Angular_Typescript - Fatal编程技术网

Javascript 返回取决于可观察值的值的最佳和最干净的方法

Javascript 返回取决于可观察值的值的最佳和最干净的方法,javascript,angular,typescript,Javascript,Angular,Typescript,我有很多代码的结构与下面的类似。有许多可观测或可回放的对象。如果我想从HTML模板中检索包含在observable中的值,那么最好的方法是什么?在特殊情况下,还包括模板中的参数 public config$ = new ReplaySubject<Config>(1); public getValue(foo: number): number { this.config$.pipe(take(1)).subscribe((config) => { // some

我有很多代码的结构与下面的类似。有许多可观测或可回放的对象。如果我想从HTML模板中检索包含在observable中的值,那么最好的方法是什么?在特殊情况下,还包括模板中的参数

public config$ = new ReplaySubject<Config>(1);

public getValue(foo: number): number {
  this.config$.pipe(take(1)).subscribe((config) => {
     // something like return config.value + foo;
  });
}
public config$=新的ReplaySubject(1);
公共getValue(foo:number):number{
this.config$.pipe(take(1)).subscribe((config)=>{
//类似于return config.value+foo;
});
}

建议尽可能不要使用
subscribe
,因为这样您还必须管理从observable取消订阅。最佳实践是对可观察对象进行管道化,然后在模板中使用
async
管道。您还可以使用
*ngIf=“config$| async as config”
将模板中的
config
变量设置为可观察变量的最新值

在控制器中

public value$ = this.config$.pipe(take(1), map(config => config.x));
然后在你的模板中

Value x from the config: {{ value$ | async }}
请参见下面的工作示例