从lwc启动flow

原来lwc里不能直接启动flow,需要将lwc包装在aura里。前几天偶然发现增加了lightning-flow这个元素,但是Salesforce的官方文档一如既往的烂,很多细节都没说清楚。试了下,发现这么几点:

1.在template里放一个lightning-flow,然后设置它的flow-api-name属性,就可以启动flow了。

2.但这个只能在加载lwc时,自动启动flow,如果希望有条件地启动,有两个方法。方法一是先将flow-api-name属性置空,绑定一个变量,然后在js里改编变量的值。即

<template>
    <lightning-flow
        flow-api-name={foo}
    >
    </lightning-flow>
</template>
foo = '';

bar() {
  this.foo = 'flowApiName';
}

3.方法二是先去掉flow-api-name属性,加上一个属性以便在js里引用,然后在js里启动flow:

<template>
    <lightning-flow
          data-name='foo'      
    >
    </lightning-flow>
</template>
let foo = this.template.querySelector('[data-name="foo"]');
foo.startFlow('flowApiName');

4.如果flow有输入参数,也有两种方法,一种是用lightning-flow的flow-input-variables属性来指定,一种是在js里指定:

foo.startFlow('flowApiName', [{'name':'foo', type:'String', value:'bar'}]);

 

posted @ 2022-11-06 23:17  平静寄居者  阅读(91)  评论(0编辑  收藏  举报