需求:使用openSubtab打开一个Custom Aura组件,同时把当前的RecordId的值传递过去
传递值的OpenSubTabCompont的Contoller代码如下(要传递的值,放在State里面)
({
openSubtab: function(component, event, helper) {
var workspaceAPI = component.find("workspace");
workspaceAPI.getEnclosingTabId().then(function(enclosingTabId) {
workspaceAPI.openSubtab({
parentTabId: enclosingTabId,
pageReference: {
"type": "standard__component",
"attributes": {
"componentName": "c__templateComponent"
},
"state": {
"c__recordId": component.get("v.recordId")
}
}
}).then(function(subtabId) {
console.log("The new subtab ID is:" + subtabId);
}).catch(function(error) {
console.log("error");
});
});
}
})
接收值的Aura组件代码如下,方法就是从pageReference中取得
({
init: function (cmp) {
var pageReference = cmp.get("v.pageReference");
cmp.set("v.recordId", pageReference.state.c__recordId);
},
})
当然,如果要使用pageReference,那么就需要在CMP文件中包含pageReference的实例
<aura:handler name="init" value="{!this}" action="{!c.doInit}"/>
<aura:attribute name="pageReference" type="object"/>
按照官方文档,实际的URL格式会变成下面的样子
/cmp/c__templateComponent?c__recordId=9062I000000IDkGQAW
参考文章