我正在尝试在服务加载后分配数据,以便更好地了解代码。
服务
getcampaigndata(slug: any): Promise<any> {
return this.http
.get('service url'+slug)
.toPromise()
.then((res) => res.json())
.catch(this.handleError);
}
父母组件
public slug: string;
public data: any = {};
this.campaign.getcampaigndata(this.slug).subscribe(params => {
this.data = params;
});
子组件
import {CampaignComponent} from '../../campaign.component';
constructor(private shared: SharedService,private route:ActivatedRoute,public campaign: CampaignComponent) { };
ngOnInit() {
console.log(this.campaign.slug);
console.log(this.campaign.data);
}
**Output** : SLUG Object{}
正如您所看到的,我已经在另一个组件上导入了CampaignComponet
,它非常适合slug cuz slug
在运行时分配但data
因为http请求而未分配。有谁解决这个问题?
使用 webservice 的this.data=JSON.parse(localStorage.getItem('currentCampaign'));
instand工作正常
答案 0 :(得分:5)
使用@Input
装饰器将数据传递到子组件
<child-component [myData]="data"></child-component>
在ChildComponent
export class ChildComponent {
@Input() myData;
}
当调用ngOnInit()
时,您传递的数据尚未绑定。因此,您需要另一个生命周期事件ngOnChanges()
或ngAfterViewInit()
。
答案 1 :(得分:0)