0
我有兩個兄弟組件,一個MapComponent和一個MenuComponent。每個項目都顯示在GoogleMap(MapComponent)上,當我點擊一個標記時,它就會獲得該項目的標識(siteId)。我想要做的是獲得該項目ID並將其用於我的菜單的鏈接,以便爲每個項目使用與項目ID的唯一鏈接,如:/ project/10001 我有一個共享服務,因爲兄弟姐妹組件不能直接交換值。我可以將項目編號寫入共享服務,但我的問題是在我的menulinks中提取項目編號。我該怎麼做呢? (我使用Angular4)Angular4中兩個兄弟組件之間的共享服務
MapComponent
clickedMarker(siteId: string) {
this.ss.selectedSite(siteId);
this.route.navigate(['project', siteId]);
}
MenuComponent的
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>
SharedService
@Injectable()
export class SharedService {
public constructor() {
console.log('Service is succesfully initialized');
}
siteId;
selectedSite(siteId) {
this.siteId = siteId;
console.log(siteId);
}
}
是什麼BehaviorSubject和可觀察的區別?因爲我看到其他人經常使用它們。 – viddrawings
只要組件處於活動狀態或其他值發生更改,BehaviourSubject就會保持最後一個值。 Observable是一種異步方法,用於管理異步數據。如果值在Observable查看的內容(I.E.變量)上發生變化,它會將更改發送到'.subscribe()'方法以使用該數據。這就是爲什麼'Promise'只運行一次,'Observable'可能運行多次。 –
好的這個解決方案的工作原理,然而routerLink已經實例化,所以我需要更新routerLink(現在不工作),任何想法如何解決這個問題? – viddrawings