【发布时间】:2018-08-07 00:35:43
【问题描述】:
在这里,我正在更改一个组件中的一些数据,例如:更改一个模块的用户个人资料图片,并且相同的个人资料图片应该反映在其他模块的另一个组件中。这些不是父/子组件。
因此,我正在导入模块和特定组件。调用分配个人资料图片范围值的组件的函数。该功能被触发并且更改的 url 出现在控制台中,如果我在控制台中打印它。但没有反映在视图中。
我试过ChangeDetectorRef 和this.ref.detectChanges(); 但它给出的错误是
core.es5.js:1020 ERROR Error: Uncaught (in promise): Error: No provider for ChangeDetectorRef!
Error: No provider for ChangeDetectorRef!
还尝试了 Zone.run()。
但这对我不起作用。谁能帮忙。
constructor(private appHeaderComponent: AppHeaderComponent) { }
//component 1 sending data
uploadProfilePicture = (event) => {
if (this.profileFormData) {
this.headerService.savePhoto(this.profileFormData, 'profile-pictures').then((saveProfilePhotoData) => {
if (saveProfilePhotoData['status_code'] === 200) {
this.appHeaderComponent.getUserImage(saveProfilePhotoData['result']['pictures'][0]['imageUrl']);
}
});
}
}
//component 2 Receiving data
getUserImage = (image) => {
if (image) {
this.userImage = image;
} else {
this.userImage = sessionStorage.profilePicture;
}
}
【问题讨论】:
-
你是如何定义你的 ChangeDetectorRef 的?应该是:
constructor(private ref: ChangeDetectorRef){} -
是的。就像
constructor(private ref: ChangeDetectorRef){}
标签: angular views provider angular2-changedetection