代码之家  ›  专栏  ›  技术社区  ›  Bhavin

等待角5中的http响应

  •  1
  • Bhavin  · 技术社区  · 6 年前

    我在做角日历。 我想在Angular-5中加载组件之前等待HTTP响应。

    日历组件:

    我想显示服务中的数据 this.totallist ,

      events: CalendarEvent[] =  this.totallist; // I have show data here which is fetched from database.
    
      ngOnInit() {
           this.eventlist.getEvents().subscribe(
             data => {
                 console.log(data);
                 let MyObj = JSON.parse(data);
                 let event_data_1 = [];
                 let outage_list = MyObj.outageList;
                 console.log(outage_list);
                  let startdate = outage_list[0].actualStartDateTime;
                  let enddate = outage_list[0].actualStartEndTime;                      
                  // console.log(startdate);
                  let converted_startdate = this.cleanDate('/Date('+startdate+')/'); 
                  let converted_enddate = this.cleanDate('/Date('+enddate+')/');                       
                  console.log(converted_startdate);
                  console.log(converted_enddate);
                  for(let i=0;i<1;i++)
                  {
                      let sub_object = {
                          start: new Date(),
                          end: new Date(),
                          title: 'A 3 day event',
                          color: colors.red,
                          actions: this.actions
                      }
                      event_data_1.push(sub_object);
                  }
                  this.totallist = event_data_1;
                  console.log(this.totallist);
                  return this.totallist;
             }
            );
           // this.column_data = column_data;
      }
    

    service.ts -

    import { Http, Response } from '@angular/http';
    import { Injectable } from '@angular/core';
    import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
    import { Observable } from 'rxjs/Rx';
    import { BehaviorSubject } from 'rxjs/BehaviorSubject';
    import { HttpClient, HttpHeaders } from '@angular/common/http';
    
    
    @Injectable()
    export class ApiNewsResolver {
    
        getEvents(): Observable<any>{
              return this.http.get('http://localhost:8080/MacromWeb/ws/Calendar').map(data => data['_body']);
    
        }
      constructor(private http: Http) { 
    
      }
    }
    

    现在我想先加载api服务,然后加载组件。我怎样才能在Angular-5中完成这项任务?

    如果需要,我可以显示我的整个组件代码。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Sachila Ranawaka    6 年前

    只需将数据存储在订阅中:

    events: CalendarEvent[]; // I have show data here which is fetched from database.
    
      ngOnInit() {
           this.eventlist.getEvents().subscribe(
             data => {
                 console.log(data);
                 let MyObj = JSON.parse(data);
                 let event_data_1 = [];
                 let outage_list = MyObj.outageList;
                 console.log(outage_list);
                  let startdate = outage_list[0].actualStartDateTime;
                  let enddate = outage_list[0].actualStartEndTime;                      
                  // console.log(startdate);
                  let converted_startdate = this.cleanDate('/Date('+startdate+')/'); 
                  let converted_enddate = this.cleanDate('/Date('+enddate+')/');                       
                  console.log(converted_startdate);
                  console.log(converted_enddate);
                  for(let i=0;i<1;i++)
                  {
                      let sub_object = {
                          start: new Date(),
                          end: new Date(),
                          title: 'A 3 day event',
                          color: colors.red,
                          actions: this.actions
                      }
                      event_data_1.push(sub_object);
                  } 
                  this.events =  event_data_1; 
             }
            );
           // this.column_data = column_data;
      }
    
        2
  •  0
  •   sebamed    6 年前

    必须加载组件,但可以使用*ngif指令加载和卸载html部件。检查数组是否为空。 更多关于 here .

    此外,你可能想检查角拦截器。