Almost fully RFC compliant vCard Formatter, that also can download the generated vCard. Outputs VCard version 4. Maybe other version will be supported.
If you want to have another Property, please open up an issue or even better provide a PR. ;)
-
Install from npm
$ npm install ngx-vcard --save
-
Import in app.module.ts:
import { NgxVcardModule } from "ngx-vcard"; @NgModule({ imports: [NgxVcardModule], }) export class AppModule {}
Look here for a Stackblitz Example
/* example.component.ts */
import { Component } from "@angular/core";
import { VCard } from "ngx-vcard";
@Component({
selector: "app-root",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.css"],
})
export class AppComponent {
public vCard: VCard = {
name: {
firstNames: "John",
lastNames: "Doe",
},
};
public generateVCardOnTheFly = (): VCard => {
// TODO: Generate the VCard before Download
return {
name: { firstNames: "John", lastNames: "Doe", addtionalNames: "Auto" },
};
};
}
<!-- example.component.html -->
<div>
<!-- Normal -->
<button id="downloadButtonNormal" [vcdDownloadVCard]="vCard">
Download VCard!
</button>
<!-- Generate VCard only on Click -->
<button
id="downloadButtonFunction"
vcdDownloadVCard
[generateVCardFunction]="generateVCardOnTheFly"
>
Download generated VCard!
</button>
</div>
Look here for a Stackblitz Example
/* example.component.ts */
import { Component } from "@angular/core";
import { VCardFormatter, VCard } from "ngx-vcard";
@Component({
selector: "app-root",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.css"],
})
export class AppComponent {
public vCard: VCard = {
name: {
firstNames: "John",
lastNames: "Doe",
},
};
public vCardString = VCardFormatter.getVCardAsString(this.vCard);
public ngOnInit() {
console.log(this.vCardString);
}
}
<!-- example.component.html -->
<p>VCard String:</p>
<p>{{vCardString}}</p>
This project is heavily inspired from the vCards-js Package from Eric J Nesser.
- VCard Version 4 - https://tools.ietf.org/html/rfc6350
- VCard Version 3 - https://www.ietf.org/rfc/rfc2426.txt A Story about everything: https://alessandrorossini.org/the-sad-story-of-the-vcard-format-and-its-lack-of-interoperability/