Как вы можете подписаться дважды на ngOnInit? - PullRequest
0 голосов
/ 11 июня 2019

Я должен подписаться дважды на ngOnInit () в моем component.ts, но кажется, что вы можете подписаться только один раз.Вторая подписка игнорируется.

Как я могу это решить?

Я проверил ее и изменил функцию, и всегда первая подписка работает, вторая игнорируется ..

Этоэто просто фиктивный код, так что не удивляйтесь из-за странных имен.

//service.service.ts
getUser(id: string){
   return this.http.get(this.url)
}

getOrder(){
   return this.http.get(this.anotherUrl)
}

//component.ts

constructor(private service: Service){}

public user: object;
public order: object;
public userID: string;
ngOnInit(){
    this.userID = this.route.snapshot.params['id'];
    this.service.getUser(this.userID).subscribe(user => { this.user = user });

    this.service.getOrder().subscribe(order => { this.order = order });
}

Это не сработает.Будет работать только первая подписка, а вторая будет игнорироваться.

Что я могу с этим сделать?Как это будет правильно?

Спасибо

1 Ответ

0 голосов
/ 12 июня 2019

Довольно непонятно, о чем вы спрашиваете, и ваш пример кода не очень помогает.

Subscribe принимает обработку ошибок в качестве второго аргумента. Так как это похоже на проблему API, вы можете поймать ошибку следующим образом:

getData() {
    this.http.get(this.url).subscribe((result) => {
      this.data = result;
      console.log(this.data);
    },
    (errror: HttpErrorResponse) = > {
        // Error handling here
        console.log(errror);
    });
    }

Кроме этого, есть возможность подписаться на несколько наблюдаемых в ngOnInit.

...