routerLink
을 방문 할 때마다 ngOnInIt
메서드를 호출해야합니다. 현재 방문한 링크의 ID를 사용하여 데이터베이스에서 데이터를 바인딩하고 검색하므로 메서드가 호출되지 않은 경우입니다. 나는 그 자료를 잃어 버렸다. 여기 라우터 링크를 방문했을 때 구성 요소 다시로드
ngOnInit() {
this.authService.getAuth().subscribe(auth=> {
if(auth) {
this.loggedInUser = auth.email;
} else {
}
});
this.teamService.getTeams().subscribe(teams => {
this.teams = teams;
console.log(this.teams);
for(var i = 0; i < this.teams.length; i++) {
if(this.teams[i].createdBy == this.loggedInUser) {
this.myTeams.push(this.teams[i]);
}
}
});
console.log(this.myTeams);
this.id = this.route.snapshot.params['id'];
//Get Team
this.scrimService.getScrim(this.id).subscribe(scrim => {
this.scrim = scrim;
});
}
을 (죄송합니다 여기에 코드 조각을 사용하는 방법을 알고하지 않습니다) 그리고 여기이 구성 요소
에 도착하기 위해 사용하고있는 라우터 링크입니다<a *ngIf="recordOwner" [routerLink]="['/edit-scrim/'+id]" class="btn btn secondary">Edit</a>
나는 ngOnInit
방법에서 모든 것이 생성자에서 호출되도록 내가 생성자 내부의 데이터에 activatedRoute.params
및 subscribe
을 사용할 수 있습니다 내 같은 비슷한 질문에 어떤 답을 읽을 수 있지만 나는 무엇을 그 수단과 방법에 대한 단서가 없다 교류 내 시나리오에서 complish :/
편집
id: string;
loggedInUser: string;
scrim: Scrim = {
name: '',
game: '',
time: '',
level: '',
description: '',
region: '',
platform: '',
acceptedBy: '',
acceptedDate: '',
acceptedStatus: '',
createdBy: '',
createdDate: '',
team: ''
}
teams: Team[];
myTeams: Team[] = [];
currentDate: string;
currentTime: string;
나는 중포 기지 데이터베이스에서 "팀"얻고 모델의 배열을 반환하는 서비스가있다. 현재 로그인 한 사용자의 이메일 주소를 사용하여 현재 사용자 만 만든 팀을 찾습니다. 일단 배열 myTeams 안에 그 팀을 가지고 내가 선택한 다음 사용자가 선택할 myTeams 목록에서 팀 이름으로 선택 HTML 태그를 채우려고합니다. 처음으로이 편집 - 스크림 페이지에 도착하면 select 태그의 팀이 잘 채워집니다.하지만 다른 페이지로 이동하여이 편집 - 스크림 페이지로 돌아 가면 RouterLink를 사용하여 선택 목록에 채워지지 않습니다. ngoninit 메소드를 다시 호출하십시오. 따라서 웹 페이지를 새로 고치면 ngoninit가 다시 호출되기 때문에 팀이 다시 채워집니다. 당신은이 같은 생성자로 activatedRoute
를 주입 할 필요가
하지만 다시 init 메소드를 호출하거나하지 않는 구성 요소를 다시로드 :/ –
당신은 다른 방법으로 API를 호출하는 코드를 추가해야하고 그 메소드를 호출하면 'this.id = parmas ['id '];' –
API 호출을 포함하도록 내 대답이 업데이트되었습니다. 작동하는지 확인하십시오. 가능한 경우 –