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。
我不知道如何迭代我的对象对象(但它应该是数组): 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。