Недавно я попытался ответить на вопрос Salesforce онлайн, который звучал прямолинейно:
How do you pass a collection of strings created in a Salesforce Lightning Flow to a LWC you're embedding in a flow screen?
Звучит как что-то, что должно работать OOB, просто настройте LWC так, чтобы он принимал тип данных String[] в качестве входных данных, но на самом деле, глядя на документы на сегодняшний день, это недоступно….
Типы данных, которые могут быть переданы в LWC, являются логическими, целочисленными или строковыми. Если ваш LWC включен для Flow Screens, вы получаете несколько дополнительных типов:
apex://namespace.Classname
— класс Apex, используемый для типа данных, определенного Apex.Date
— дата в формате ISO 8601.DateTime
— дата и время в формате ISO 8601.@salesforce/schema/namespace__Objectname
или@salesforce/schema/Objectname
— именованный объект из схемы Salesforce.
Но нет списка строк!
Так что я поиграл и придумал пару вариантов
Свести к одной строке
Это выглядит как хак, но мы можем передать нашу коллекцию Flow String в LWC, представленную в виде одной строки, поскольку String является допустимым типом данных. Затем в контроллере LWC мы можем выполнить некоторые манипуляции со строками, чтобы преобразовать их обратно в массив.
Поток
В своем потоке создайте формулу типа данных «Текст», которая возвращает вашу переменную коллекции строк потока. Он вернет строку формата «[Astro,Codey,Einstein,Cloudy,Appy]»
Передать строку в LWC
LWC
Результат
Тип данных, определенный Apex
Этот метод, как мне кажется, немного чище, мы можем передать коллекцию Flow String в LWC на борту типа данных, определенного Apex. Этот тип данных определяется вами через класс Apex. Этому классу требуется только одно публичное свойство @AuraEnabled для хранения вашего списка строк, которые необходимо передать в LWC.
Высший класс
LWC
Настройте, как ваш LWC будет передавать данные в Lightning Flow и обратно через файл .js-meta.xml. Установите в качестве целевого типа свойства класс Apex, используемый для определения типа данных, определенного Apex выше.
Поток
Создайте переменную для хранения коллекции строк, передаваемой в LWC.
Передайте всю переменную потока определенного Apex типа данных в LWC:
Результат