【发布时间】:2017-01-02 16:54:45
【问题描述】:
我的服务“MySharedService”中有一个数据,该数据在“MyOutputTemp”中有一个值。我想在组件加载时将其显示在组件中。
这是我的组件:
@Component({
template: `....
<p>{{MyOutputHere}}
.....`
providers: [MySharedService]
})
export class MyOutputComponent implements OnInit{
MyOutputHere: string;
constructor (private _mySharedService: MySharedService){}
ngOnInit(){
console.log('Getting value from the service: ' + this._mySharedService.MyOutputTemp); //says undefined
this.MyOutputHere = this._mySharedService.MyOutputTemp;
console.log('Value in the component: ' +this.MyOutputHere);//says undefined
}
}
这是我的服务:
@Injectable()
export class MySharedService{
MyOutputTemp: string;
assignOutput(incomingParameter: string){
this.MyOutputTemp = incomingParameter;
console.log('Assigned value: ' + this.MyOutputTemp);
//the value is successfully assigned and I can get a print
} //I am calling it in another component. It is successfully assigning the value. Consider MyOutputTemp has value now.
}
我尝试了什么:使用 ngOnInit() 从服务中获取值,并将其放在“MyOutputHere”中。 会发生什么: {{MyOutputHere}} 没有显示任何值。如果我在控制台中打印该值,它会显示“未定义”。
这里在概念上是什么错误? 还有,如何从服务中获取 MyOutputTemp 的值并将其显示在组件中?
【问题讨论】:
-
您还没有调用
assignOutput,它为MyOutputTemp分配了一些值。您应该先调用该函数进行设置。 -
我在另一个组件中调用它。它正在成功分配值。考虑 MyOutputTemp 有价值。
-
您是否调试过当
ngOnInit事件在您的组件中触发时是否设置了该值? -
是的,我做到了。我尝试在控制台中打印值。它说未定义。
-
ngOnInit事件在您的组件开始初始化时执行,并且由于某种原因未完成对设置值的调用MyOutputTemp。我建议您改为调用该函数并尝试设置值。
标签: angular typescript