Angular5 - вновь созданный объект из класса возвращает неопределенный - PullRequest
0 голосов
/ 02 октября 2018

У меня есть класс обслуживания, в котором я передаю объект из компонента, временно сохраняя его в классе модели.я хочу получить ключ $ в lecturer.service.ts от lecturer.ts (модель).

lecturer.component.ts

onItemClick(lec: Lecturer) {
  this.lecturerService.selectedLecturer = Object.assign({},lec); // this is working properly as i have seen in console.log(lec)
}

lecturer.ts

export class Lecturer {
    $key: string;
    userName: string;
    userEmail: string;
    userProfileImageUrl: string;
}

теперь я просто хочу получить ключ $ от lecture.ts в классе обслуживания, но почему-то не могу получить ключ для использования в этой функции ..

lecture.service.ts

 import { Injectable } from '@angular/core';
 import { Lecturer } from './lecturer';
 import { AngularFireDatabase, AngularFireList } from '@angular/fire/database';

 @Injectable({
    providedIn: 'root'
 })

  export class LecturerService {
     lecturerList: AngularFireList<any>;
     assignedCourseList: AngularFireList<any>;

     selectedLecturer: Lecturer = new Lecturer();

     constructor(private db: AngularFireDatabase) {}

     getAssignedCourse() {
     this.assignedCourseList = this.db.list('Users/' + this.selectedLecturer.$key + '/Course'); //this is where i'm having problem to get the $key
       console.log(this.selectedLecturer.$key);
       return this.assignedCourseList;
     }
  }

что я могу сделать, чтобы достичь этого ..?

1 Ответ

0 голосов
/ 02 октября 2018

Решение 1:

Я думаю, вы должны передать ему значение по умолчанию следующим образом ...

лектор.ts file

export class Lecturer {
   $key: string = '';
   userName: string = '';
   userEmail: string = '';
   userProfileImageUrl: string = '';
}

создание нового объекта

selectedLecturer: Lecturer = new Lecturer();

console.log(selectedLecturer)
// output will be
 { $key: '',
   userName: '',
   userEmail:'',
   userProfileImageUrl:''
 }

Решение 2:

Файл lecture.ts

Или добавьте конструктор для назначения значения при создании нового объекта, подобного этому ...

export class Lecturer {
   $key: string;
   userName: string;
   userEmail: string;
   userProfileImageUrl: string;
   constructor(key:string,userName: string,userEmail: string, userProfileImageUrl: string){
         this.$key = key;
         this.userName = userName;
         this.userEmail = userEmail;
         this.userProfileImageUrl = userProfileImageUrl
        }
}

new Objectсоздание

selectedLecturer: Lecturer = new Lecturer('my_key','name','email','url');

console.log(selectedLecturer)
// output will be
 { $key: 'my_key',
   userName: 'name',
   userEmail:'email',
   userProfileImageUrl:'url'
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...