Угловая привязка к объекту, а не к ArrayList

Я использую Angular и пытаюсь пройти через объект

JSON

employee {"fName":"mike","email":"[email protected]"}

интерфейс

export interface Employee {
fName:string
email:string

}

компонент

    iEmployee: Employee[];
getITIMDATA() {
        this._ersaDet.getITIMData(this.ersaGlobalUID)
            .subscribe(
            data => {
                this.iEmployee = data;
            },
            error => 'GetAllCostCenetrs Method: ');

    }

HTML

 <div *ngFor="let itim of iEmployee">
        <div class="col-lg-12">
            <div class="row">
                <div class="form-group">
                    <label class="control-label">Name</label>
                    <input type="text"  name="Name" class="form-control" id="ntName" [(ngModel)]="itim.fName">
                </div>
            </div>
        </div>
 <div>

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

Не удается найти другой вспомогательный объект «[object Object]» типа «object». NgFor поддерживает привязку только к Iterables, таким как Arrays.


person rgoal    schedule 13.08.2018    source источник


Ответы (2)


Ну, ваш код в подписке

data => {
    this.iEmployee = data;
}

каково содержание data? можете ли вы напечатать значение this.iEmplyoee после присваивания.

Компилятор TypeScript говорит, что это не массив объектов.

Можете ли вы создать простой рабочий пример? (на Stackblitz, plunkr, ....)

ОБНОВЛЕНИЕ

Кажется, вы ожидаете получить одну запись, а не массив, поэтому вы можете:

  • удалить ngFor
  • измените код внутри подписки на что-то вроде

    данные => { this.iEmployee = [данные]; }

Кстати, очень странно, что вы не получаете сообщение об ошибке/предупреждении от компилятора, когда пытаетесь присвоить один объект массиву объектов. Удалили ли вы какую-либо проверку в файле tsconfig?

person Massimo Costa    schedule 13.08.2018
comment
когда я делаю console.log(this.iEmployee), я получаю это [object Object] - person rgoal; 14.08.2018
comment
попробуй с console.log(JSON.stringify(this.iEmployee)) - person Massimo Costa; 14.08.2018
comment
Я сделал так и получил сотрудника {fName:mike,email:[email protected]} - person rgoal; 14.08.2018
comment
@MassimoCosta, OP не получает никаких предупреждений, потому что data в этом контексте имеет тип any, который может быть назначен чему угодно, включая массив, без ошибки. - person Simon K; 14.08.2018
comment
отлично, это сработало .. мой последний вопрос, в чем магия скобок [данные]? просто я так понимаю - person rgoal; 14.08.2018
comment
ну, я создаю this.iEmployee массив объектов, содержащий только одну запись data. Кстати, если вы вызываете всегда, возвращает одну запись, возможно, вы можете использовать скалярное значение, а не массив. Если ответ работает, не забудьте принять это - person Massimo Costa; 14.08.2018

Вы должны вернуть массив в json, а не один объект. Даже если у вас есть один объект, вы должны вернуть массив одного объекта.

person muasif80    schedule 13.08.2018