【发布时间】:2019-10-04 04:31:57
【问题描述】:
我想在登录我的登录组件时将数据传递给我的导航栏组件,但我的导航栏内容没有更新。
我的导航栏组件在应用程序模块中,而我的登录组件在另一个模块中。
我尝试使用服务来共享数据。
我的登录组件,这个组件在另一个模块中
export class LoginComponent {
userCredentials;
constructor(
private readonly _authService: AuthService,
) {
}
login() {
this._authService.auth(this.userCredentials)
.subscribe(
(response: any) => {
const dataForm = {
usuario: response.user,
rol: this.response.role,
};
this._authService.setSession(response);
},
error => {
console.log(error);
}
);
}
}
我的 NavBarComponent,这个组件在 app-module 中
export class NavbarComponent {
isLogged = false;
susbscription: Subscription;
constructor(
private readonly _authService: AuthService,
) {
this.suscripcion = this._authService
.changeState$
.subscribe(
(isLogged) => {
this.isLogged = isLogged;
},
error => console.log(error)
);
}
}
我的导航栏 HTML
<mat-toolbar color="primary">
<mat-toolbar-row>
<span>SUPERMERCADO</span>
<span class="spacer"></span>
<div *ngIf="!isLogged">
<button mat-button
Login
</button>
</div>
<div *ngIf="isLogged">
<p>Welcome</p>
</div>
</mat-toolbar-row>
</mat-toolbar>
我的服务,这个服务不在app-module中
@Injectable()
export class AuthService {
protected url = environment.url;
protected model = '/user';
isLogged = false;
private changeState = new Subject<boolean>();
changeState$ = this.changeState.asObservable();
constructor(
private readonly _router: Router,
protected readonly httpclient: HttpClient,
) {
}
setSession(data: any) {
this.isLogged = true;
this.changeState.next(this.isLogged);
}
auth(dataForm: any): Observable<any> {
const url = `${this.url}${this.model}/login`;
return this.httpclient.post(url, dataForm);
}
}
我正在使用角度 8.2.0
【问题讨论】:
标签: angular typescript angular8