我的angular2应用程序使用ngfor指令显示来自json数组的数据。以前,为了测试目的,我已经将json数组硬编码到组件中,并且应用程序工作得很好。现在,我已经将硬编码的json数组替换为使用http请求来提供json数组的服务。我可以点击提供这些数据的链接几次(在2-4次之间变化),它可以正常工作,然后抛出错误。
我是app.routes.ts
...
{path:'deals', component:Deals},
...路由器链路
<li id="deals" (click)="loadField('deals')"><a [routerLink]="['/deals']"><p class="propertyNavItem" id="dealsText">Deals</p></a></li>交易部分
dev_file:string = "dev_files/deals.json";
list:Array<string>;
constructor(private ghttp: GeneralHttpService){}
ngOnInit(){
this.ghttp.getRecommendations(this.dev_file).subscribe(
data=>{
this.list = data.items;
},
error => console.log(error),
() => console.log("done")
);
}ghttp服务
@Injectable()
export class GeneralHttpService{
constructor(private http:Http){};
getRecommendations(url:string){
return this.http.get(url).map(res => res.json() );
}
}引发的错误是这样的。它看起来和https://github.com/angular/angular/issues/9479的问题一样
错误:未激活browser_adapter.js:86异常:错误:未激活browser_adapter.js:86异常:错误:未激活browser_adapter.js:77:13 STACKTRACE: browser_adapter.js:77:13解析:http://localhost:4200/vendor/zone.js/dist/zone.js:538:32 makeResolver/<@http://localhost:4200/vendor/zone.js/dist/zone.js:515:14 http://localhost:4200/vendor/zone.js/dist/zone.js:515:14区域C11http://localhost:4200/vendor/zone.js/dist/zone.js:356:24 NgZoneImpl/this.inner<.onInvokeTask@impl.js:36:32 Zonehttp://localhost:4200/vendor/zone.js/dist/zone.js:355:24 Zonehttp://localhost:4200/vendor/zone.js/dist/zone.js:256:29 drainMicroTaskQueue@http://localhost:4200/vendor/zone.js/dist/zone.js:474:26 ZoneTask/ code> @http://localhost:4200/vendor/zone.js/dist/zone.js:426:22 browser_adapter.js:77:13
发布于 2016-07-08 08:06:30
http是一个异步操作。在呈现模板时,可能还没有填充list变量。
尝试使用“猫王操作员”(?)在您的ngFor中,如下所示:
*ngFor="let listElement of list?"https://stackoverflow.com/questions/38261200
复制相似问题