您如何在ngOnInit上订阅两次?

时间:2019-06-11 11:49:53

标签: typescript angular7 subscription ngoninit

我必须在我的component.ts中的ngOnInit()上订阅两次,但看来您只能订阅一次。第二个订阅将被忽略。

我该如何解决?

我对其进行了测试并更改了功能,并且总是第一个订阅有效,而第二个订阅却被忽略。

这只是一个伪代码,因此不要奇怪,因为命名很奇怪。

//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 :(得分:0)

不清楚您要问什么,示例代码并没有真正帮助。

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中订阅多个可观察对象。