Angular 5不会在ngOnInit上运行多个方法吗?

时间:2018-01-29 20:41:12

标签: node.js angular

我附上了我想要做的截图。这是如此基本但令人沮丧。我必须在从被调用的第一个方法中检索对象数组后运行数据解析,但我不能将我的方法添加到ngOnInit中的一个或者直接在ngOnInit中添加。无论哪种方式,该方法都不会运行。有任何想法吗? Image

  ngOnInit() {
    this.getSiteContent(this.route.snapshot.params['id']);

    //Doesnt work
    this.addUpdatedPages();
  }

//in use
getSiteContent(id) {

    this.http.get('/site-content/'+id).subscribe(data => {
      this.siteContent = data;

    });

    //Doesn't show..
    console.log('End of getSiteContent');

}

addUpdatedPages(){

  //Doesn't show
  console.log('Adding pages...');

  for (var i = 0; i < this.siteContent.length; i++) {

    this.checkNull(this.siteContent[i].SiteID, this.siteContent[i].SitePageID);
    console.log(this.nullCheck[0].SiteID);

    if (this.nullCheck.length > 0) {
      this.siteContent[i].SitePageContent = this.nullCheck[0].SitePageContent;
    }

} 
}

ngOnInit() { this.getSiteContent(this.route.snapshot.params['id']); //Doesnt work this.addUpdatedPages(); } //in use getSiteContent(id) { this.http.get('/site-content/'+id).subscribe(data => { this.siteContent = data; }); //Doesn't show.. console.log('End of getSiteContent'); } addUpdatedPages(){ //Doesn't show console.log('Adding pages...'); for (var i = 0; i < this.siteContent.length; i++) { this.checkNull(this.siteContent[i].SiteID, this.siteContent[i].SitePageID); console.log(this.nullCheck[0].SiteID); if (this.nullCheck.length > 0) { this.siteContent[i].SitePageContent = this.nullCheck[0].SitePageContent; } } }

1 个答案:

答案 0 :(得分:0)

当您致电this.http.get时,所有内容都指向未处理的异常。您应该检查您的浏览器控制台,如果有的话,它会显示它。一个可能的原因是http未注入或未定义。

ngOnInit() {
    this.getSiteContent(this.route.snapshot.params['id']);

    // if the above throws an exception anything below would not be called
    this.addUpdatedPages();
}

getSiteContent(id) {
    this.http.get('/site-content/'+id).subscribe(data => {
      this.siteContent = data;
    });

    // If the call above to this.http.get throws an exception the code below would not be called
    console.log('End of getSiteContent');
}

话虽如此,应该在addUpdatedPages的{​​{1}}中调用方法subscribe,因为您希望在检索到数据库之后发生。修改http.get,以便将该行移动到observable的getSiteContent调用的回调中。

subscribe