我有一个Angular 4应用程序。我已经使用Visual Force将这个应用程序集成到Salesforce中作为画布应用程序。
<apex:page standardController="Account">
<apex:canvasApp applicationName="My_Canvas" parameters="{param1:'value1'}" width="100%"/>
</apex:page>
要求是从Angular应用程序的salesfoce / VF页面中获取param1的值,并获取要在HTML中显示的数据。 我可以使用Angular中的以下代码来部分实现这一目标。
loadTasks() {
this.isloading = true;
Sfdc.canvas.client.ctx(this.callback.bind(this), Sfdc.canvas.oauth.client());
}
loadTasksfromCallback()
{this.tasks$=this.dataService.loadTasks((<HTMLInputElement>document.getElementById('url')).value, this.groupsArray );
this.tasks$.subscribe((data) => {
this.isloading = false;
console.log('this.isloading',this.isloading);
this.tasks = data;
console.log('inside loadTasksfromCallback',this.tasks);
},
(error) => {console.log('Inside call error',error)},
() => {console.log('inside call completed successfully')});
}
callback(msg) {
if (msg.status !== 200) {
console.log("Error: " + msg.status);
return;
}
this.groupsArray=[];
this.groupsArray.push(msg.payload.environment.parameters.param1);
this.loadTasksfromCallback();
}
问题在于,虽然this.isloading的值设置为false,并且this.tasks具有更新的数据,但该数据未反映在HTML页面中。
答案 0 :(得分:0)
在调用salesforce上下文调用之后,我们必须明确/强制要求angular来检测更改。 this.changeDetector.detectChanges();