如果我理解你的代碼,當你點擊鏈接時,你將進入/ profile頁面。 因此,如果內容B是成型件,你可以把你扔user.id路由器的參數,如:
<a [routerLink]="['/profile', user.id]">
當然之前配置正確的路線。您可以檢查這些單證:
在app.module.ts
const appRoutes: Routes = [
{path: 'addProfile', component: AddProfileComponent },
{path: 'listProfiles', component: ListProfilesComponent},
{path: 'profile/:id', component: ProfileComponent}
]
而且
在ProfileComponent
export class ProfileComponent implements OnInit {
private selectedId: number;
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.paramMap
.switchMap(params => this.selectedId = +params.get('id');
// second option
this.route.params.subscribe(params => this.selectedId = +params['id'])
}
}
OR
如果當你點擊你只想一個值發送到這是在你的頁面組件的鏈接,你可以使用@input裝飾。就像這樣:
<componentA>
<li class="list-group-item list-group-item-action"
*ngFor="let user of users">
<a routerLink="/profile" routerLinkActive="active"
(click)="testFunc(user.id)">{{user.name}}</a>
</li>
<componentB [inputName]="userId"></componentB>
</componentA>
在TS文件:
import { Component, Input } from '@angular/core';
@Component({
selector: 'componentA',
templateUrl: 'url'
})
export class ComponentA {
public userId: string = ""
constructor() {}
public function testFunc(id: string): void {
this.userId = id
}
}
....
import { Component, Input } from '@angular/core';
@Component({
selector: 'componentB',
templateUrl: 'url'
})
export class ComponentB implements OnInit {
@Input() inputName: string;
constructor() {}
function ngOnInit(): void {
console.log(inputName)
}
}
要小心,不要試圖你的輸入變量顯示爲構造函數沒有按」 t工作
您可以使用此線程中描述的廣播事件https://stackoverflow.com/questions/33338276/angular-2-event-broadcast – Pak
組件A和B如何相關(親子,兄弟,還是不相關)?他們在你的應用中出現在哪裏? – amal
應該是親子關係,但我認爲它不相關atm – Amar