Невозможно отобразить данные из FirebaseDatabase - PullRequest
1 голос
/ 22 марта 2019

Я пытаюсь отобразить массив элементов в выпадающем списке ng-multiselect. Когда я жестко кодирую значения в массиве, они отображаются, однако, когда я пытаюсь создать массив динамически из элементов в базе данных, они не отображаются, даже если они точно зарегистрированы в массиве.

save.component.ts

...

populateDropdown(callback) {
    let ham = this.students.snapshotChanges().map(changes => {
        return changes.map(c => ({key: c.payload.key,...c.payload.val()}));
    });

    callback(ham);
}

ngOnInit() {
    //stuff
    this.fs.initFirebaseApp(environment.userFirebase, 'users');
    this.students = this.fs.getList('/students');
    let aCall = (data) => {
        let count = 1;
        data.forEach(student => {
            student.forEach(element => {
                this.dropdownList.push({
                    item_id: count++,
                    item_text: element.first + " " + element.last
                });
            });
        });
    }

    this.populateDropdown(aCall);

    this.dropdownSettings = {
        singleSelection: false,
        idField: 'item_id',
        textField: 'item_text',
        selectAllText: 'Select All',
        unSelectAllText: 'Unselect All',
        itemsShowLimit: 3,
        allowSearchFilter: true
    };
    console.log(this.dropdownList);
    this.dropdownList1 = this.dropdownList.slice();
    console.log(this.dropdownList1);
}
...

save.component.html

<ng-multiselect-dropdown
            [placeholder]="'Select Students'"
            [data]="dropdownList"
            [(ngModel)]="selectedItems"
            [settings]="dropdownSettings"
            (onSelect)="onItemSelect($event)"
            (onSelectAll)="onSelectAll($event)"
          >
 </ng-multiselect-dropdown>

firebase.service.ts

...
  public initFirebaseApp(config: FirebaseAppConfig, firebaseAppName: string) {
        this._db = new AngularFireDatabase(_firebaseAppFactory(config, firebaseAppName));
    }

    /** Function to get firebase DB list */
    public getList(path: string): AngularFireList<{}> {
        return this._db.list(path);
    }

    /** Function to get firebase DB object */
    public getObject(path: string): AngularFireObject<{}> {
        return this._db.object(path);
    }

console.log(this.dropdownList) отображает массив объектов, а console.log(this.dropdownList1) - пустой массив. Регистрация каждого элемента в dropdownList отдельно также ничего не регистрирует.

[{ item_id: 1, item_text: "Test Name" }
{ item_id: 2, item_text: "Alice Bob" }
{ item_id: 3, item_text: "Foo Name" }
{ item_id: 4, item_text: "Test Test" }]
​```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...