Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在angular2中的ngOnInit之后,在构造函数中订阅服务正在执行_Angular_Angular2 Services_Angular2 Directives - Fatal编程技术网

在angular2中的ngOnInit之后,在构造函数中订阅服务正在执行

在angular2中的ngOnInit之后,在构造函数中订阅服务正在执行,angular,angular2-services,angular2-directives,Angular,Angular2 Services,Angular2 Directives,正如我们所知,构造函数首先执行。。但当我试图订阅构造函数中的服务时,它是在ngOnInit之后执行的。。但我想在执行ngOnInt之前订阅该服务。你能帮帮我吗 这是我的示例代码 constructor(private otherRoleService: OtherRoleService) { this.data = [{ "roleid" : "0" }]; this.otherRoleService.ge

正如我们所知,构造函数首先执行。。但当我试图订阅构造函数中的服务时,它是在ngOnInit之后执行的。。但我想在执行ngOnInt之前订阅该服务。你能帮帮我吗

这是我的示例代码

constructor(private otherRoleService: OtherRoleService) {
      this.data = [{
                    "roleid" : "0"
                  }]; 
this.otherRoleService.getOtherRoles(this.data).subscribe(res => console.log('constructor'), err => this.fail(err));}

ngOnInit(){
 console.log('OnInit')
}

您正在订阅一个事件,并且您在正确的时间执行该操作,唯一的问题是该事件在一段时间后被触发


如果您使用的是angular router,您可以检查该功能,这将确保在加载组件之前解析您的可观察对象

您需要了解异步。你是在ngOnInit之前订阅的。但您稍后将从订阅接收第一个异步事件。就像,如果你订阅了一份时事通讯,然后吃了一片吐司,那么你的吐司会在收到时事通讯的第一封邮件之前被吃掉,可能是一两天后。@jbnize这不是取决于吐司的大小吗?我的意思是,如果你有一个由全尺寸面包做成的烤面包,吃它可能需要一些时间。这是一个关于事件循环的好视频,它将帮助你了解javascript是如何工作的,以及为什么你在onInit之后订阅数据: