получить underfind для данных, назначенных в обслуживании в угловых 6 - PullRequest
0 голосов
/ 17 октября 2019

Я не хочу вызывать службу в файле .ts. Это вызовет много времени. Поэтому я просто хочу присвоить это глобальное значение, которое я могу использовать, но я получаю неопределенное значение

Вот мой служебный файл

@Injectable({
  providedIn: 'root'
})
export class DeService {

  data:any;

  constructor(private http: HttpClient){}


  getData(id:any):Observable<any>{
    this.http.get(Url.getDetails+"id="+id).pipe(first()).subscribe(res=>{
        this.data = res;
        console.log(this.data)   //Here I got the data
    }
    return this.http.get(Url.getDetails+"id="+id)
    }
}

файл ts

export class text implements OnInit{

    constructor(public de:DeService){}

    ngOnInIt(){
        console.log(this.de.data);   //here it returns undefind
    }
}

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Поскольку вы используете Observable, а Observable работает с асинхронными данными, ваши data:any; не инициализируются, поэтому они регистрируют неопределенные.

Это происходит

export class text implements OnInit{

    constructor(public de:DeService){}

    ngOnInIt(){
        console.log(this.de.data);   //here it returns undefind
    }
}

До этого:

  getData(id:any):Observable<any>{
    this.http.get(Url.getDetails+"id="+id).pipe(first()).subscribe(res=>{
        this.data = res;
        console.log(this.data)   //Here I got the data
    }
    return this.http.get(Url.getDetails+"id="+id)
  }

Чтобы это исправить, вы должны установить data:any в какое-то значение или использовать @Sajeetharan решение конечно.

0 голосов
/ 17 октября 2019

Вы не можете получить доступ к наблюдаемой подобным образом, вам нужно вызвать метод и подписаться на метод следующим образом,

getData(id:any):Observable<any>{
  return this.http.get(Url.getDetails+"id="+id);
}

и в компоненте,

ngOnInIt(){
   this.de.getData(id).subscribe((data)=>{
     console.log(data);
   });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...