0

我正在我的 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 模板文字时,电子邮件仍会通过我的默认电子邮件客户端按预期生成,但电子邮件的各个字段(即电子邮件地址、主题、正文)显示为“未定义”。这就是我正在尝试的:

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}`;

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

4

2 回答 2

1

我通过@Rob 关于“this”和范围的评论的灵感得到了这个调整。一旦我将变量放在一个对象中,并从该上下文中调用,模板文字选项就起作用了:

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}`;
于 2017-06-15T20:45:07.443 回答
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`;
于 2017-06-15T20:31:45.463 回答