Angular2 rc1 ngFor“找不到类型为'object'的不同支持对象'[object Object]'

Angular2 rc1 ngFor "Cannot find a differ supporting object '[object Object]' of type 'object'

我不知道如何迭代我的对象对象(但它应该是数组): Data structure

Error: Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.

视图结构:

  <a *ngFor="let msg of messages " href class="clearfix">
          <div class="img-area"><img [ngClass]="{'photo-msg-item': !msg.from}"
                                     src="{{ ( msg.from ||  (msg.from | baProfilePicture)) }}"></div>
          <div class="msg-area">
            <div>{{ msg.message }}</div>
            <span>{{ msg.send_date }}</span>
          </div>
        </a>

组件:

 public notifications:Array<Object>;
  public messages:Array<Message>;
  public data_error: Boolean = false;
  constructor(private _baMsgCenterService:BaMsgCenterService) {
      this.messages = this._baMsgCenterService.getMessages().subscribe(
        (messagess) => { 

          let result:Array<Message> = [];
          if (messagess) {
          messagess.forEach((message) => {
            result.push(
               new Message(message[0], 
                        message[1],
                        message[2],
                        message[3],
                        message[4])
               );
          });
        }
        this.messages = result;
        },
      err => { this.data_error = true}
    );

我认为您的问题出在这一行:

this.messages = this._baMsgCenterService.getMessages().subscribe(

您似乎正在尝试将 Subscription 对象设置为您的 messages 变量(subscribe 方法 returns Subscription 对象 https://github.com/ReactiveX/rxjs/blob/master/src/Observable.ts#L87 )

所以你必须消除这个副作用。应该是:

this._baMsgCenterService.getMessages().subscribe(
<a *ngFor="let msg of messages | async " href class="clearfix">

尝试添加一些 "async"

here