* Вот мой Product.Service, который uid не определен после перезагрузки страницы, но он определен после первого входа в систему, я не знаю почему. Пожалуйста, кто-нибудь может помочь мне обнаружить эту проблему, я искал но я не нашел решения, и я спросил много людей, но никто не ответил мне, я новичок в Angular
import { Injectable, EventEmitter, Output } from "@angular/core";
import { AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database-deprecated';
import * as firebase from 'firebase/app';
import { AngularFireAuth } from 'angularfire2/auth';
import { Product } from "./models/product.model";
import { METHODS } from "http";
@Injectable()
export class ProductService{
products: FirebaseListObservable<Product[]>;
user : firebase.User;
users : Array<any> = [];
final_data: Array<any> = [];
uid:string;
constructor(
private db: AngularFireDatabase,
private afAuth: AngularFireAuth
) {
this.afAuth.authState.subscribe(auth => {
if (auth !== undefined && auth !== null) {
this.user = auth;
console.log(this.user.uid);// uid is defined here
}
});
console.log(this.user.uid);// uid is undefined here
}
getProducts(): FirebaseListObservable<Product[]>{
return this.db.list(`users/${this.user.uid}/products`);
}
Вот мой компонент, который отображает продукты:
import { Component, OnInit, Input, AfterViewChecked, OnChanges } from '@angular/core';
import { Product } from '../models/product.model';
import { ProductService } from '../product.service';
import { ShoppingCartService } from './shopping-cart.service';
import { AuthServiceService } from '../auth-service.service';
import { FirebaseListObservable } from 'angularfire2/database-deprecated';
import { AngularFireAuth } from 'angularfire2/auth';
@Component({
selector: 'app-shopping-cart',
templateUrl: './shopping-cart.component.html',
styleUrls: ['./shopping-cart.component.css']
})
export class ShoppingCartComponent implements OnInit, OnChanges {
products:FirebaseListObservable<Product[]>;
productsArray : Product[];
sum:number = 0;
constructor( private ProdService: ProductService, private afAuth: AngularFireAuth) {
}
ngOnInit() {
this.afAuth.authState.subscribe(
auth => console.log(auth.uid, " Shopping Cart") // uid is defined
)
this.products = this.ProdService.getProducts(); // uid is undefined here
}
ngOnChanges(){
this.products = this.ProdService.getProducts(); // uid is undefined here
}
}