Angular 4和SalesforceCanvas集成问题

时间:2018-07-16 10:24:24

标签: angular canvas salesforce

我有一个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页面中。

1 个答案:

答案 0 :(得分:0)

在调用salesforce上下文调用之后,我们必须明确/强制要求angular来检测更改。 this.changeDetector.detectChanges();