Non riesco a generare automaticamente lo script jsonld in angularjs2, tuttavia ho trovato una soluzione per angularjs1. Qualcuno ha una soluzione per questo.Tag script JSON-ld per angularjs2
risposta
Ho trovato un po ' "brutto", ma la soluzione di lavoro utilizzando pipe "SafeHTML":
import {Pipe, PipeTransform} from '@angular/core';
import {DomSanitizer, SafeHtml} from '@angular/platform-browser';
@Pipe({name: 'safeHtml'})
export class SafeHtmlPipe implements PipeTransform {
constructor(protected sanitized:DomSanitizer) {
}
transform(value:any):SafeHtml {
return this.sanitized.bypassSecurityTrustHtml(value);
}
}
Utilizzando in tandem con il Angular Universal, è possibile inserire qualsiasi codice di script:
<div [innerHtml]="'<script type=\'application/ld+json\'>' + jsonLdStringifiedObj + '</script>' | safeHtml"></div>
Ho testato l'output di questo codice nel Google Structured Data Testing Tool e funziona come previsto.
Ho lo stesso problema. potresti spiegare come risolvere questo problema? Per favore controlla questo link https://stackoverflow.com/questions/44389546/schema-not-detected-in-google-structured-data-testing-tool – vel
@vel, devi prerenderare la tua applicazione angolare su un server web usando Angular Universale affinché lo strumento di test dei dati strutturati di Google sia in grado di analizzare il codice HTML che include i dati strutturati. Vedere l'esempio [progetto di avvio] (https://github.com/robwormald/ng-universal-demo). – tooleks
Ho provato con universale angolare. Ma non posso usare Ng build --prod. Questo è il problema. Come risolvere questo? – vel
soluzione senza l'utilizzo di un tubo (modo un po 'pulito)
Utilizzare il this.sanitizer.bypassSecurityTrustHtml fornito https://angular.io/guide/security#sanitization-and-security-contexts
Nel modello
<div [innerHtml]="jsonLDString"></div>
Nel componente/direttiva
private jsonld: any;
public jsonLDString: any;
private setJsonldData() {
this.jsonld = {
'@context': 'http://schema.org/',
'@type': 'Service',
'name': this.providerName,
'description': this.providerDescription,
'aggregateRating': {
'@type': 'AggregateRating',
'ratingValue': '3',
'bestRating': '5',
'ratingCount': '3'
},
'url' : this.providerUrl
};
this.jsonLDString = '<script type="application/ld+json">' + JSON.stringify(this.jsonld) + '</script>';
this.jsonLDString = this.sanitizer.bypassSecurityTrustHtml(this.jsonLDString);
}
visita 'http://stackoverflow.com/questions/35332430/angularjs-script-tag-json-ld/35333500#35333500' – AK1
Ciao grazie per la tua risposta, ma questa soluzione è per angularjs1 non per la versione 2 che è completamente diversa . –
trovato ancora qualcosa? – Nicky