代码之家  ›  专栏  ›  技术社区  ›  POV

如何在使用响应数据之前调用方法?

  •  1
  • POV  · 技术社区  · 6 年前

    我使用路由并尝试读取get参数 id :

    public classes: any;
    ngOnInit() {
        this.route.params.subscribe(params => {
          if (params['id']) {
            let a = getData(this.classes, params['id']);// Notice here
          }
        });
    

    你可以注意到 this.classes 对象。它是空的。

    下面我有一个方法来填充 这一类。 :

     public loadClasses(): void {
        this.classService.getAllClasses()
          .subscribe(data => {
             this.classes = data;
        });
    }
    

    问题是路由先工作,所以对象 这一类。 是空的。

    如何先打电话 loadClasses() 要为路由加载数据:`let a=getdata(this.classes,params['id']);?

    2 回复  |  直到 6 年前
        1
  •  3
  •   ibenjelloun    6 年前

    要获取数据,您需要路由参数和类,这看起来是 combineLatest :

    ngOnInit() {
        combineLatest(this.route.params, this.classService.getAllClasses())
        .subscribe(([params, classes]) => {
            if (params['id']) {
                let a = getData(classes, params['id']);
            }
        });
    }
    
        2
  •  0
  •   tzm    6 年前

    我认为你应该这样做:

        public classes: any;
    
        ngOnInit() {
        this.loadClasses().subscribe(() => getData());
    
        private getData(): void {
            this.route.params.subscribe(params => {
              if (params['id']) {
                let a = getData(this.classes, params['id']);// Notice here
              }
            });
        }
    
         public loadClasses(): void {
            this.classService.getAllClasses()
              .subscribe(data => {
                 this.classes = data;
            });
        }