我的服务是common.shared.service.ts
import { AuthService } from '../../services/api/auth-service';
import { Observable, Observer, Subject } from 'rxjs/Rx';
import { Injectable } from '@angular/core';
@Injectable()
export class CommonSharedService {
data: any;
dataChange: Observable<any>;
private dataChangeObserverl ;
constructor() {
this.dataChange = new Observable(observer =>
this.dataChangeObserverl = observer).share();
}
setData(data: any) {
this.data = data;
this.dataChangeObserverl.next(this.data);
}
}
现在我在我的一个组件中返回一个承诺时设置数据,例如HeaderComponent
export class HeaderComponent implements OnInit {
user: {};
constructor(private authService: AuthService, private
commonSharedService: CommonSharedService) {};
ngOnInit() {
this.authService.get()
.subscribe(
(response) => {
this.user = response;
this.commonSharedService.setData(response);
} ,
(error) => {
console.log(error)
}
}
}
但是当我在某个其他组件中获得suth用户对象时,它会给出错误
错误类型错误:无法读取未定义的属性“next”。我认为,因为我在返回promise之后设置了值,这就是为什么有时候它会给出这个错误如何解决这个问题。请帮助。
在其他一些组件中
this.commonSharedService.dataChange.subscribe((data) => {
console.log(data);})
}