【发布时间】:2018-03-10 04:48:53
【问题描述】:
我有两个同级组件,一个 MapComponent 和一个 MenuComponent。每个项目都显示在 GoogleMap(MapComponent)上,当我单击标记时,它会获取该项目的 ID(siteId)。我想要做的是获取该项目 id 并在我的菜单的链接中使用它,这样对于每个项目,它都会与项目 id 建立一个唯一的链接,例如:/project/10001 我有一个共享服务,因为兄弟组件不能直接交换值。我可以将项目 ID 写入共享服务,但我的问题是在我的菜单链接中获取项目 ID。我该怎么做呢? (我使用的是 Angular4)
地图组件
clickedMarker(siteId: string) {
this.ss.selectedSite(siteId);
this.route.navigate(['project', siteId]);
}
菜单组件
selectedSite = this.sharedService.siteId;
<a class="submenu" *ngFor="let submenu of item.submenu, let i = index"
md-list-item [routerLink]="[submenu.url, selectedSite]">
<i class="material-icons spacer">{{submenu.icon}}</i>
<div *ngIf="!minimalMenuOpen">{{submenu.name}}</div>
</a>
共享服务
@Injectable()
export class SharedService {
public constructor() {
console.log('Service is succesfully initialized');
}
siteId;
selectedSite(siteId) {
this.siteId = siteId;
console.log(siteId);
}
}
【问题讨论】:
标签: angular service components shared