【问题标题】:Observable returning value after method call finished [duplicate]方法调用完成后可观察的返回值[重复]
【发布时间】:2020-04-15 12:28:22
【问题描述】:

getModel() 方法总是返回空名称数组,即使语言 Observable 返回值也是如此。为什么?

    export interface Category extends BaseModel {
      code: string;
      name: LocalizedValue[];
      description: LocalizedValue[];
      active: boolean;
    }

    getAllLanguages(): Observable<Language[]> {
       // this return list of languages
    }

    protected getModel(): Category {
    let model: Category = {
      id: '',
      code: '',
      name: [],
      description: [],
      active: false,
    };
    let nameField: LocalizedValue[] = [];
    this.languageService.getAllLanguages().subscribe(list => {
      list.forEach(l => {
        let n: LocalizedValue = {
          language: l.code,
          value: '',
        };
        nameField.push(n);
      });
    });
    model.name = nameField;
    return model;
  }

【问题讨论】:

标签: angular rxjs rxjs-observables


【解决方案1】:

您在订阅之外分配 model.name。这将在订阅中的代码之前执行。试试这个:

protected getModel(): Category {
let model: Category = {
  id: '',
  code: '',
  name: [],
  description: [],
  active: false,
};
let nameField: LocalizedValue[] = [];
this.languageService.getAllLanguages().subscribe(list => {
  list.forEach(l => {
    let n: LocalizedValue = {
      language: l.code,
      value: '',
    };
    nameField.push(n);
  });
  model.name = nameField;
  return model;
});

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-28
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    • 2020-12-07
    • 1970-01-01
    相关资源
    最近更新 更多