angular - Typescript/Javascript: mailto med ämne, kropp och en lista med länkar
Jag arbetar med Angular 4. Vid klick på en hyperlänk måste jag öppna Outlook, i mailet måste jag skicka 4 länkar. Så jag har planerat att kalla på en mailto från min TypeScript-fil. Min kod är
<span (click)="mailMe()">Mail me the links</span>
var links= ["link1.com", "link2.com", "link3.com"];
mailMe(){
console.log("111111");
var mail = document.createElement("a");
console.log("22222");
mail.href = "mailto:[email ?subject=files&body=Hi";
mail.click();
}
Jag kan anropa funktionen men e-postmeddelandet dyker inte upp. I konsolen skrivs 111111 ut men 22222 skrivs inte ut. Var gjorde jag fel? Eller finns det ett sätt att jag kan skicka arrayen med länkar direkt från HTML?
Svar #1
du vill uppnå så här
<a href="mailto:[email ?Subject=Hello&body=links: %0D
http://link1.com %0D http://link1.com " target="_top">Send Mail</a>
i Angular kan du göra det så här, i HTML
<a [href]="emailstring" target="_top"></a>
i ts-fil gör så här
emailstring= "mailto:[email ?Subject=Hello&body=links: %0D
http://link1.com %0D http://link1.com";
Har inte testat med Angular men kolla det med ren HTML. och det fungerar på Chrome.
Svar #2
Du kan uppnå detta i IE med ett enkelt window.location.href eftersom IE har ett konstigt beteende med mailto. Här använder jag samma <span> från din kod med links-arrayen.
Exempel på kod för IE :
import { Component} from '@angular/core';
@Component({
selector: 'app-root',
template: `
<span (click)="mailMe()">Mail me the links on (click)</span>
`
})
export class AppComponent {
name = 'test';
links : any[]= ["link1.com", "link2.com", "link3.com"];
mailText:string = "";
mailMe(){
this.mailText = "mailto:[email +?subject=files&body="+this.links.join(" ,"); // add the links to body
window.location.href = this.mailText;
}
}
Exemplet nedan kanske inte fungerar i IE, men det är testat i Chrome. Här har jag använt en ankartagg och ställt in href-attributet i TypeScript.
Exempel för Chrome och andra
import { Component,OnInit } from '@angular/core';
@Component({
selector: 'app-root',
template: `
<a [href]="mailText">Mail me the links</a> <br>
`
})
export class AppComponent implements OnInit {
name = 'test';
links : any[]= ["link1.com", "link2.com", "link3.com"];
mailText:string = "";
ngOnInit(){
this.mailText = "mailto:[email +?subject=files&body="+this.links.join(" ,");
}
}
Här är en fungerande demo: https://stackblitz.com/edit/attribute-binding-1-7wncwf
