提问者:小点点

你怎么能在ngOnInit上订阅两次?


我必须在我的组件. 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个答案

匿名用户

目前还不清楚您在问什么,并且您的示例代码并没有真正帮助。

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