Как вызвать метод перед использованием данных ответа? - PullRequest
0 голосов
/ 28 мая 2018

Я использую маршрутизацию и пытаюсь прочитать получить параметр id:

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

Вы можете заметить this.classes объект.Он пуст.

Ниже у меня есть метод, который заполняет this.classes:

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

Проблема в том, что маршрут работает первым, поэтому объект this.classes пуст.

Как сначала вызвать loadClasses() для загрузки данных для маршрута: `let a = getData (this.classes, params ['id']);?

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Чтобы получить ваши данные, вам нужен параметр маршрута и классы, это выглядит как идеальный случай для ОбъединитьПоследние :

ngOnInit() {
    combineLatest(this.route.params, this.classService.getAllClasses())
    .subscribe(([params, classes]) => {
        if (params['id']) {
            let a = getData(classes, params['id']);
        }
    });
}
0 голосов
/ 28 мая 2018

Я думаю, что вы должны сделать что-то вроде этого:

    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;
        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...