在mailto:string中使用es6模板文字不能按预期工作

时间:2017-06-15 20:22:16

标签: javascript angular typescript ecmascript-6 template-literals

我正在使用Typescript驱动的Angular 2应用生成一个包含一些预填充信息的电子邮件。这将使用用户的默认电子邮件客户端生成电子邮件。目前,当我在组件中构建如下字符串时,这是有效的:

greetingEmail = `user@example.com?subject=Family%20Greeting%20Email&body=message%20goes%20here`;

我在视图中的href中使用它。我的相关视图代码如下所示:

<a [href]="'mailto:' + greetingEmail" tabindex="-1">Generate Greeting Email</a>

但是当我尝试使用es6 / ecma2015模板文字时,电子邮件仍然通过我的defaut电子邮件客户端按预期生成,但电子邮件的各个字段(即emailAddress,subject,body)显示为'undefined' 。这就是我正在尝试的:

emailAddress: 'user@example.com';
subject: 'Family Greeting Email';
body: 'This is where the body of the email goes...';

greetingEmail = `${this.emailAddress}?subject=${this.subject}&body=${this.body}`;

是否有一个特殊原因导致模板文字选项在这种情况下不起作用,或者为什么字段在运行时未定义?或者是其他问题?

2 个答案:

答案 0 :(得分:1)

我使用了@ Rob关于&#34;这个&#34;的评论启发了调整。和范围。一旦我将变量放在一个对象中,并从该上下文调用,模板文字选项就起作用了:

emailProps = {
    emailAddress: 'user@example.com',
    subject: 'Family Greeting Email',
    body: 'This is where the body of the email goes...'
};

greetingEmail = `${this.emailProps.emailAddress}?subject=${this.emailProps.subject}&body=${this.emailProps.body}`;

答案 1 :(得分:0)

我看到的最大问题是你的变量。在Angular2中它将是:

emailAddress:string = 'user@example.com';
subject:string =  'Family Greeting Email';
body:string = 'This is where the body of the email goes...';

sendEmail = this.emailAddress + '?subject=' + this.subject + '&body=' + this.body`;