当前项目位于Angular 6
上,我尝试在左侧面板上创建按钮列表,例如“冰淇淋”,“爆米花”等,因此当用户单击每个按钮时,它将更改URL标题面板中的添加按钮,并且当用户单击标题上的Add
按钮时,它应该显示该项目的创建页面。
我的问题是,当单击左侧面板上的按钮时,如何更改route
按钮的URL(或add
),因为它们来自不同的组件?
答案 0 :(得分:1)
您可以尝试以下操作:
<app-left-panel #menu> </app-left-panel>
<app-header [selected]="menu.selected"> </app-header>
[...]
export class HeaderComponent{
@Input() selected;
[...]
}
<!-- something -->
<a [routerLink]="'\/buy\/'+selected">Add</a>
<!-- something else-->
items = ["popcorn","churros","coke"];
[...]
setSelected(value){
this.selected = value;
}
<!--something -->
<button *ngFor="let str of items" (click)="setSelected(str)">{{str}}</button>
<!-- something else -->
这样做,您可以在包装器组件内部的两个组件(左面板和标题)之间建立连接,这要归功于HeaderComponent中的@Input() selected
元素。从菜单中选择每个项目后,添加按钮routerLink
就会更新。