ngOnInit-等待可观察的订阅操作结果对象

时间:2019-11-18 00:06:30

标签: javascript angular typescript observable ngrx

我正在尝试在模板中获取最小/最大验证器。

  ngOnInit() {

    this.app.object$.pipe(takeWhile(() => this.alive)).subscribe(object=> {
      this.object= object;});

     this.objectMin= object.min.find(x => x.name === "min11").value;

}

我正在尝试在模板中使用objectMin(数字)。但是,由于observable尚未完成订阅,因此对象仍然未定义,因此objectMin也仍然未定义。

任何解决方案吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

为此可能有几种解决方案。最好的方法是拥有一个可观察的物体,它将像这样包裹您的objectMin

  1. 具有这样的类级别可观察变量:

    objectMin$: Observable<number>;

  2. 像这样在ngOnInit()中初始化此可观察对象-

    ngOnInit(){

    this.objectMin$ = this.app.object$.pipe(
                             takeWhile(() => this.alive),                                 
                             map((object) => {
                               this.object = object;
                               return object.min.find(x => x.name === "min11").value;
                             })
                      );}
    
  3. 在模板中使用async管道来展开以下值:<currency-input [form]="formGroup"[min]="objectMin$ | async">

希望有帮助。