> For the complete documentation index, see [llms.txt](https://docs.nzoni.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nzoni.app/angular/seo-and-ssr.md).

# SEO & SSR

### Seo Service

```typescript
export class SeoService {

  constructor(private title: Title,
              private meta: Meta,
              @Inject(DOCUMENT) private dom: Document) { }

  setCanonicalUrl(url:string){
    const head = this.dom.getElementsByTagName('head')[0];
    let element: HTMLLinkElement = this.dom.querySelector(`link[rel='canonical']`) || null
    if (element === null) {
      element = this.dom.createElement('link') as HTMLLinkElement;
      head.appendChild(element);
    }
    element.setAttribute('rel', 'canonical')
    element.setAttribute('href', url)
  }

  setLang(lang: string) {
    const head = this.dom.getElementsByTagName('html')[0];
    head.setAttribute('lang', lang)
  }

  setMetaTitle(title: string) {
    this.title.setTitle(title);
  }

  setMetaDescription(content: string) {
    this.meta.updateTag({
      name: 'description',
      content
    });
  }

  addMetaTag(content: string, name: string) {
    this.meta.addTag({
      name,
      content
    });
  }
}

```

### How to set meta title, meta description and canonical url?

```typescript

	constructor(private seoService: SeoService) {
	}

        ngOnit() {
            // Set up meta title
	    this.seoService.setMetaTitle('your_title_here');
	    // Set up meta description
	    this.seoService.setMetaDescription('your_description_here');
	    // set up canonical url
	    this.seoService.setCanonicalUrl('your_url')
        }
```

### How build ssr

```
ng build ssr
ng build prerender
```
