ฉันใช้ เชิงมุม 2 rc1 และเราเตอร์ใหม่ @ เชิงมุม/เราเตอร์
ในองค์ประกอบของแอป ฉันมีส่วนนำทางและร้านเราเตอร์
<nav>
<a *ngIf="auth?.userName == null" [routerLink]="['/login']">Login</a>
<a *ngIf="auth?.userName != null" (click)="logout()">Logout</a>
{{auth?.userName}}
</nav>
<router-outlet></router-outlet>
ฉันแทรก LoginService ลงในองค์ประกอบของแอปและสมัครรับกิจกรรมใน ngOnInit
ngOnInit() {
this.loginService.loginSuccess.subscribe(this.loginSuccess);
}
ngOnDestroy() {
this.loginService.loginSuccess.unsubscribe();
}
private loginSuccess(res: IAuthResponse) {
this.auth = res;
}
เมื่อฉันนำทางไปยังหน้าเส้นทาง '/ เข้าสู่ระบบ' / ส่วนประกอบ บริการเข้าสู่ระบบของฉันถูกฉีดเข้าไป และ บริการเข้าสู่ระบบจะกำหนดเหตุการณ์
@Output() loginSuccess = new EventEmitter<IAuthResponse>();
และหลังจากเข้าสู่ระบบบริการของฉันสำเร็จ บริการเข้าสู่ระบบก็จะเพิ่มกิจกรรม
this.loginSuccess.next(response);
ฉันสามารถตั้งค่าเบรกพอยต์ในองค์ประกอบของแอปบน LoginSucess ที่สมัครเป็นสมาชิกได้ และข้อมูลจะถูกส่งต่อไป อย่างไรก็ตาม 'สิ่งนี้' ไม่ได้ถูกกำหนดไว้
private loginSuccess(res: IAuthResponse) {
this.auth = res; //this is undefind
}
ฉันจะอัปเดตส่วนประกอบของแอปจากเหตุการณ์ที่ถูกทริกเกอร์จากบริการที่ใช้ในส่วนประกอบที่โฮสต์ในเต้ารับเราเตอร์ได้อย่างไร