Как разобрать строку по заданному шаблону c в angular? - PullRequest
0 голосов
/ 30 марта 2020

У меня есть компонент angular, в котором у меня есть 4 поля customerName, startDate, startTime. Теперь у меня есть 4-е поле как textarea, в котором я показываю пользователю, какое сообщение будет отправлено по электронной почте или SMS. Поэтому в моем компоненте определена строка, подобная этой:

emailConent = 'Hi [customer_name],↵↵Your appointment has been scheduled for [start_date] at [start_time]'

Итак, при загрузке компонента я генерирую сообщение, заменяя весь текст в [] на соответствующие значения поля ввода. Как я заменяю [customer_name] значением customerName так же, как я заменяю [start_date] на startDate и так далее. Таким образом, мой шаблон становится таким:

Hi John Doe,

Your appointment has been scheduled for 30-Mar-20 at 03:00 pm.  
Please confirm your appointment.

И этот шаблон отображается в поле textarea, и пользователь видит этот шаблон. А также пользователь может изменить этот текст, как пользователь может добавить дополнительный текст в этой области текста.

Итак, я хочу, чтобы, если пользователь добавил дополнительные данные в текстовую область, как это

Hi John Doe,

Your appointment has been scheduled for 30-Mar-20 at 03:00 pm.  
Please confirm your appointment. Please be on time there

Итак, вы можете видеть, что Please be on time there - это текст, добавленный пользователем в текстовую область. Так что я хочу, чтобы разобрать его обратно в мой формат тегов, как это

'Hi [customer_name],↵↵Your appointment has been scheduled for [start_date] at [start_time]. Please be on time there'

Я просто хочу получить дополнительный текст, который пользователь добавил в textarea.

Как я могу достичь этого в angular?

Ответы [ 2 ]

0 голосов
/ 30 марта 2020

Это базовый c дифференциальный искатель, который я могу придумать. Вы можете изменить diff калькулятор.

function getEmail(customer_name, start_date, end_date) {
  const emailTemplate = `Hi ${customer_name},

Your appointment has been scheduled for ${start_date} at ${end_date} pm.
Please confirm your appointment.`;
  return emailTemplate;
}

const myString = getEmail("John Doe", "30-Mar-20", "03:00");

// after modify
const userString = `Hi John Doe,

Your appointment has been scheduled for 30-Mar-20 at 03:00 pm.  
Please confirm your appointment. Please be on time there.`;
let diff = "";
const myStringArray = myString.split(/\n/);
userString.split(/\n/).some((line, index) => {
  const originalLine = myStringArray[index].trim();
  const modifiedLine = line.trim();
  if (modifiedLine !== originalLine) {
    diff =
      originalLine.length > modifiedLine
        ? originalLine.replace(modifiedLine, "")
        : modifiedLine.replace(originalLine, "");
    return false;
  }
});
console.log(diff);
0 голосов
/ 30 марта 2020

Вы должны использовать строку литералов шаблона, которая поддерживается в машинописи. Вместо использования ' вы должны использовать `` `. Если вы хотите напечатать вашу переменную, это очень просто:

`Hi ${customer_name},

 Your appointment has been scheduled for ${start_date} at ${start_time}. Please be on time there`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...