从异步函数Angular 5保存到变量

问题描述 投票:0回答:1

你好我是角度和火力的新手,并一直在网上看,但没有一个解决方案适合我,希望有人可以提供帮助。 (如果我没有使用正确的术语,我可以澄清,如果你问,就像我说我是新来的。)谢谢。

我试图将数据保存到异步函数中的变量中。当我尝试订阅它时,我收到此错误:

/////////////////////////////////////////////
        ERROR TypeError: Cannot read property 'subscribe' of undefined
        at EmployeeListComponent.ngOnInit (employee-list.component.ts:17)

会发生什么:

  1. 从angularfire商店保存数据将其保存到名为employees:Observable<Employee>;的变量中 constructor(public afStore: AngularFirestore, private authService: AuthService) { this.authService.afAuth.authState.subscribe(user => { this.employeeList = this.afStore.collection<Employee>('restaurantUsers/' + user.uid + '/employees'); return this.employees = this.employeeList.valueChanges(); }); }
  2. 从名为getData()的方法返回数据 getData(): Observable<Employee[]> { return this.employees; }
  3. 从组件employee-listcomponent访问它 export class EmployeeListComponent implements OnInit { constructor(private employeeService: EmployeeService, private authService: AuthService) { } ngOnInit() { this.employeeService.getData().subscribe(data => { console.log(data); }); }

来自我的employee-listComponent -

@Injectable()
    export class EmployeeService {
      employeeList: AngularFirestoreCollection<Employee>;
      employees: Observable<Employee[]>;
      selectedEmployee: Observable<Employee[]>;



    constructor(public afStore: AngularFirestore, private authService: AuthService) {

        this.authService.afAuth.authState.subscribe(user => {
            this.employeeList =`enter code here` this.afStore.collection<Employee>('restaurantUsers/' + user.uid + '/employees');
            return this.employees = this.employeeList.valueChanges();
        });
      }


      getData(): Observable<Employee[]> {
        return this.employees;
      }



    //////////////////////////////////////////////////////////////

    export class EmployeeListComponent implements OnInit {
      constructor(private employeeService: EmployeeService, private authService: AuthService) {

       }

      ngOnInit() {
        this.employeeService.getData().subscribe(data => {
          console.log(data);
        });
      }

        **/////////////////////////////////////////////
        ERROR TypeError: Cannot read property 'subscribe' of undefined
        at EmployeeListComponent.ngOnInit (employee-list.component.ts:17)**
typescript firebase google-cloud-firestore angular5 angularfire2
1个回答
0
投票

这是因为在你的异步请求完成之前,this.employeesundefined中是EmployeeService。您需要将其初始化为流并将记录从服务器返回时将其推送到该流。最简单的方法是使用Subject并将其设置为重播任何后期订阅者的最后一个值。

根据您在这里要完成的工作,可能有一种更好的方法来解决您的问题,而不是保留这些记录。

© www.soinside.com 2019 - 2024. All rights reserved.