Угловая модель геттера "не является функцией" ошибка - PullRequest
0 голосов
/ 28 сентября 2018

Моя модель:

export class User {

   public username: string;
   private email: string;

   constructor() {
       this.username = undefined;
       this.email = undefined;
   }

   public getUsername(): string {
       return this.username;
   }

На мой взгляд, у меня есть:

import {User} from '../../models/usermodel';

export classs ... {

   user: Observable<User | null>
   userCollection: AngularFirestoreCollection<User>;
   userLoadedFromFirestore: User[];

   this.userCollection = this.afs.collection('users', ref => ref.where('email', '==', this.sessionData.getUser().getEmail()));
   this.userCollection.valueChanges().subscribe((item => {
       this.userLoadedFromFirestore = item;
       this.userLoadedFromFirestore[0].getUsername();

Для доступа к getUsername() Я получаю ошибку времени выполнения: is not a function.Это почему?Когда я делаю this.userLoadedFromFirestore[0].username вместо этого, это работает!

В среде IDE не отображаются ошибки во время компиляции ...

1 Ответ

0 голосов
/ 28 сентября 2018

Вы устанавливаете тип userLoadedFromFirestore как тип User[], но когда данные поступают, это не гарантирует, что этот объект будет User типа.Вот почему рекомендуется установить тип входящих данных:

subscribe(((item: User[]) => {

И в вашем случае, скорее всего, вам понадобится:

this.userLoadedFromFirestore[0].username;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...