【发布时间】:2018-08-06 04:45:27
【问题描述】:
我创建了一个服务来从 API 获取数据并使用 Subject 从我的组件中获取这些数据(在应用初始化时调用 LoadTenants):
服务:
@Injectable()
export class TenantService{
public tenants;
private tenantSubject = new Subject<any>();
constructor(private http: HttpClient) {
}
LoadTenants() {
this.http.get(TENANT_URL).subscribe((data: any) => {
this.tenants = data;
this.setTenants();
});
}
setTenants() {
this.tenantSubject.next(this.tenants);
}
getTenants(): Observable<any> {
return this.tenantSubject.asObservable();
}
getSyncTenants() {
return this.tenants;
}
}
组件:
public tenant;
subsciption: Subscription;
constructor(private tenantService: TenantService) { }
ngOnInit() {
this.subsciption = this.tenantService.getTenants().subscribe((datas) => {
this.tenant = datas;
},
error => console.log('Error : ', error)
);
}
}
ngOnDestroy() {
this.subsciption.unsubscribe();
}
第一次加载时一切正常,但如果我导航到另一个组件并返回到这个组件,则不会触发订阅,从而导致我的模板中的数据无效。
【问题讨论】: