当我在构造函数中调用我的服务时,我得到了未定义。
该服务是在ngOnInit
方法中调用的,从Difference between Constructor and ngOnInit我看到构造函数首先运行,但在我的情况下我注意到相反的情况,所以我有点困惑。有更多的解释,谢谢。
constructor(private curveService :ProgressCurveService, private util : UtilService) {
this.startPickerOptions = new DatePickerOptions();
this.endPickerOptions = new DatePickerOptions();
//this.datePickerOptions.initialDate = new Date(Date.now());
}
ngOnInit() {
this.curveService.instance.getCurve(this.startDate.formatted,this.endDate.formatted,this.amplutid).
then(res => {
this.lineChartLabels = this.util.dateToShortString(Object.keys(res.progressPlotData))
this.lineChartData = this.util.objectToIntArray(res.progressPlotData);
}).catch(res => console.log('error if date selecting ...'));
}
进度曲线服务:
import { progressCurveItf } from './progress-curve/progress-curve-interface';
@Injectable()
export class ProgressCurveService {
state : string = 'project';
constructor(private prsCurve : PrsProgressCurveService, private projCurve : ProjProgressCurveService) { }
get instance():progressCurveItf{
if(this.state == 'subproject'){
return this.prsCurve;
} else {
return this.projCurve;
}
}
}
答案 0 :(得分:0)
当你返回一个类型为progressCurveItf
的实例时,我认为你返回的实例化存在问题,
检查您是否提供PrsProgressCurveService
和ProjProgressCurveService
。
答案 1 :(得分:0)
要回答您的问题,构造函数将被调用,因为它属于ES6,基本上它具有优先级。其中ngOnInit是由角度小组设计的生命周期挂钩,即使在ngOnChanges生命周期挂钩之后,它也将在构造函数之后被调用。
构造函数-> ngOnChanges-> ngOnInit->后跟其他生命周期挂钩