【发布时间】:2016-08-03 17:52:30
【问题描述】:
我正在调用我的后端服务器 (Spring Boot),它返回一个对象列表 Foo。
但是,当我在 *ngFor 中列出我的对象时,它根本不会迭代。我知道我的服务器返回一个包含两个对象的列表,因为我已经对其进行了调试,并且返回的响应是一个包含两个对象的数组。我想我错过了一个愚蠢的步骤,非常感谢任何帮助。
foo.ts
name: string;
id: number;
description: string;
list-foo.service.ts
@Injectable
export class ListFooService
constructor(private _http: Http) {}
private _getFooUrl = '/api/foos/foos';
getFoos() {
return this._http.get(this._getFooUrl)
.map(res => <Foo[]> res.json())
.do(data => console.log(data))
}
我知道这会返回一个包含两个对象的数组,如我的链的最后一步所示。
@Component({
selector: 'foo-component',
templateUrl: 'app/templates/foo.component.html'
})
export class FooComponent implements OnInit {
constructor(private _listFooService:ListFooService) {
}
foos:Foo[];
errorMessage:string;
ngOnInit() {
this.getFoos();
}
getFoos() {
this._listFooService.getFoos()
.subscribe(
foos => {this.foos = foos; console.log("Foos"); console.log(this.foos)},
error => this.errorMessage = <any>error);
}
}
还有我的 foo.component.html
<ul>
<li *ngFor="#foo of foos">
{{foo.name}}
</li>
</ul>
test
除了测试(在我的 for 块之外)之外,我什么都没有显示
如果有帮助,这里是后端
FooController.java
@RequestMapping("/connectors")
public @ResponseBody List<Foo> getFooList()
{
return fooDAO.getAllFoos(); //this works
}
和 Foo.java
private String name;
private int id;
private String description;
//getters and setters
以及我的 html 文件中的 <head>
<script src="node_modules/angular/angular.min.js"></script>
<script src="node_modules/es6-shim/es6-shim.min.js"></script>
<script src="node_modules/systemjs/dist/system-polyfills.js"></script>
<script src="node_modules/angular2/es6/dev/src/testing/shims_for_IE.js"></script>
<script src="node_modules/angular2/bundles/angular2-polyfills.js"></script>
<script src="node_modules/systemjs/dist/system.src.js"></script>
<script src="node_modules/rxjs/bundles/Rx.js"></script>
<script src="node_modules/angular2/bundles/angular2.min.js"></script>
<script src="node_modules/angular2/bundles/router.min.js"></script>
<script src="node_modules/angular2/bundles/upgrade.js"></script>
<script src="node_modules/angular2/bundles/http.min.js"></script>
从服务器返回的 JSON 响应是
[
{
"name": "Foo",
"id": 1,
"description": "FooBar"
},
{
"name": "Foo2",
"id": 2,
"description": "FooBar2"
}
]
【问题讨论】:
-
将
ListFooService添加到组件的Providers中:providers: [ListFooService] -
我已经尝试过了,得到了相同的结果:(谢谢
-
控制台有记录吗?
-
是的,它记录 [Object, Object],当我展开它时,它会显示两个对象及其数据
-
嗯,你能不能做一个plunker?
标签: spring-boot angular