我创建了一个sharedService()
以获取特定位置中的所有项目,我已将默认ID值设置为3
但我想要一个下拉菜单,可以在其中更改一个位置Id: 4, Id: 5
。Angular2 SharedService传递ID作为默认值,但可以更改
private sourceSiteId = 3;
getOriginSite() {
return this.http.get('http://www.example.com/api/Orders?sourceSite=' + this.sourceSiteId)
.map(res =>res.json());
}
然后我把这个sharedService
在我的组件得到它使用*ngFor
的项目和输出,当用户改变位置也应该在选择的位置更新项目基地的名单。
编辑:我把错误的功能,那它应该是其中之一也被称为ngOnInit()
getOrdersFromOrigin() {
this.sharedService.getOriginSite()
.subscribe(data => {
this.items= data.Results
}
项目列表ngFor
这就需要选择位置时进行更新。这是导航的订单清单html
<nav></nav>
<div *ngFor="let x of items">
<button>{{ x.name }}</button>
</div>
此刻我只创建了一个虚拟位置来获取逻辑。这是来自导航组件,它是订单列表html中的子组件。
this.sourceSites = [
{
'Id': 1,
'StoreLocation': 'Eastleigh'
},
{
'Id': 2,
'StoreLocation': 'Portchester'
},
{
'Id': 3,
'StoreLocation': 'Soho'
},
{
'Id': 4,
'StoreLocation': 'Basingstoke'
}
]
<ul class="dropdown-menu">
<li *ngFor="let store of sourceSites"><a href="javascript:;" (click)="changeSite(store.Id);">{{ store.StoreLocation}}</a></li>
</ul>
更新 这就是我,我传给位置ID在我的点击功能,然后我传递给服务。但是,这并不有3
默认值,因为getOrderById()
在ngOnInit
被触发,那么则初始API调用将null
这是我ChildComponent changeSite(sourceSite){ this.sharedService.getOriginSite( sourceSite) .subscribe(数据=> { 的console.log(数据); //给我想在父呈现ngFor 数据}) }
SharedService
getOriginSite(sourceSite) {
return this.http.get('http://myexample.com/api/Orders?sourceSite='+ sourceSite)
.map(res =>res.json());
}
如何将sourceSite=3
值更改为选定位置并在选择位置后更新列表?
我已经更新了我的帖子,我在'changeSite(id)'中传递了'Id',然后传递给'SharedService',它给了我想要在父html中呈现的对象,这是我坚持如何传递这个objs给父母的地方。我会尝试第一个解决方案。 – MrNew