如何为从数据库(angular 6和firebase)检索数据的服务中的组件变量赋值?

如何为从数据库(angular 6和firebase)检索数据的服务中的组件变量赋值?,angular,service,real-time,lifecycle,Angular,Service,Real Time,Lifecycle,我是角度编程新手,这个问题当然很简单,但它让我疯狂 我在firestore上有一个数据库,我正在用一个服务从中检索数据 数据由接口构成(嵌套其他接口,包括数组…) 我的服务: @Injectable({ providedIn: 'root' }) export class InfogeneriqueServicesService { ItemsInfoGeneriqueCollection : AngularFirestoreDocument<Navigation>;

我是角度编程新手,这个问题当然很简单,但它让我疯狂

我在firestore上有一个数据库,我正在用一个服务从中检索数据

数据由接口构成(嵌套其他接口,包括数组…)

我的服务:

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

  ItemsInfoGeneriqueCollection : AngularFirestoreDocument<Navigation>;

  Infogenes: Observable<Navigation>;   

  constructor(public afs: AngularFirestore) {

  this.ItemsInfoGeneriqueCollection = this.afs.doc('user/7878AZEVZAEV4'); 
  this.Infogenes = this.ItemsInfoGeneriqueCollection.valueChanges();

  } getInfoSGeneriques(){    
   return this.Infogenes;

}
@可注入({
providedIn:'根'
})
导出类信息通用服务服务{
一般收集项目:AngularFirestoreDocument;
信息基因:可观察;
建造商(公共afs:AngularFirestore){
this.ItemsInfoGeneriqueCollection=this.afs.doc('user/7878AZEVZAEV4');
this.Infogenes=this.ItemsInfoGeneriqueCollection.valueChanges();
}getInfoSGeneriques(){
返回这个;
}
我的组件ts:

import {Navigation} from '../StructureInterfaces/structuresInter';
import { InfogeneriqueServicesService } from '../services/infogenerique-services.service';
...

Nav : Navigation;
...
constructor(private adapter: DateAdapter<any>, private NaviService : InfogeneriqueServicesService) {}

ngOnInit(){

     this.NaviService.getInfoSGeneriques().subscribe(IDperso =>{
    this.Nav = IDperso;

   });


   this.selectedgrade = this.Grades[this.Nav.id.grade-1].viewValue;
从“../StructureInterfaces/structuresInter”导入{Navigation};
从“../services/infogenerique services.service”导入{infogenerique服务};
...
导航:导航;
...
构造函数(专用适配器:DateAdapter,专用NaviService:InfoGeneriqueService){}
恩戈尼尼特(){
this.NaviService.getInfoSGeneriques().subscribe(IDperso=>{
这个.Nav=IDperso;
});
this.selectedgrade=this.Grades[this.Nav.id.grade-1].viewValue;
我得到一个错误:

错误类型错误:“this.Nav未定义”

是因为此时还没有生成this.Nav吗? 此.selectegrade…指令是否应等待数据生成(以及如何生成?),或者是否存在代码问题


非常感谢您的帮助…谢谢!

将用于设置selectedGrade回调函数的代码移动到getInfoSGeneriques中,因为您正在执行的函数是异步的

ngOnInit(){
  this.NaviService.getInfoSGeneriques().subscribe(IDperso =>{
    this.Nav = IDperso;
    this.selectedgrade = this.Grades[this.Nav.id.grade-1].viewValue; 
  });
}

感谢您的回复,但这并不能解决我的问题。