我使用最新的角度,进口和其他角度的东西是正常的。我有这样的代码:
<div class="ExerciseRoutine">
<input type="button" value="hide" onClick="hideRoutine(this);" />
<hr/>
<div class="ExerciseType">...</div>
<br/>
</div>
<script type="text/javascript">
function hideRoutine(event){
// just in case you need to access the element id
var elementId = event.id,
parentElement = event.parentElement.className;
$('.'+parentElement+'').find('.ExerciseType').hide();
}
</script>
...class definition
ngOnInit(){
this.http.get("http://localhost:5000/getData").subscribe(data => {
this.data = data;
});
}
返回json中的数据。而角度在localhost:5000/getData
上,它有自己的路由器。数据是正确的,但我无法在http://localhost:4200/
方法之外使用此数据(没有错误,subscribe()
字段为空)。我哪里错了?我应该怎么做才能解决这个问题?(我修复了同一原产地政策的麻烦,因为其他事情都是正常的)。我必须将数据从服务器显示到我的组件中;
答案 0 :(得分:1)
subscribe是异步的,你不能在组件初始化的时候获取值,这个值还没有,如果你有一些与数据有关的动作,你可以在subscribe中调用一个函数: / p>
this.http.get("http://localhost:5000/getData").subscribe(data => {
this.data = data;
this.doAction(this.data);
});
您可以使用异步管道在视图中显示数据: 更改您的代码并使用.map,因此将返回一个Observable:
import 'rxjs/add/operator/map';
this.data= this.http.get("http://localhost:5000/getData")
.map(response => response.json());
并在您的视图中使用异步管道,无需订阅
<div *ngFor="let item of (data | asyn)"> {{item}}</div>
答案 1 :(得分:0)
private display = "downloading";
ngOnInit(){
new Promise((resolve,reject)=>{
this.http.get("http://localhost:5000/getData").subscribe(data => {
resolve(data);
});
}).then(data=>{
if(data['someKey']!==undefined){
this.display = "downloaded";
this.data = data;
}else{this.display = "noData";}
});
}
这是我的解决方案,我在从服务器加载数据时显示不同的视图。视图取决于display