Próbuję automatycznie wygenerować skrypt jsonld w angularjs2, jednak znalazłem rozwiązanie dla angularjs1. Czy ktoś ma rozwiązanie tego problemu.Znacznik skryptu Json-ld dla angularjs2
Odpowiedz
znalazłem trochę „brzydki”, ale rozwiązanie jest wykonywana przy użyciu „safeHtml” rura:
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);
}
}
Używając go w parze z Angular Universal można wstawić dowolny kod skryptu:
<div [innerHtml]="'<script type=\'application/ld+json\'>' + jsonLdStringifiedObj + '</script>' | safeHtml"></div>
Przetestowałem wyjście tego kodu w Google Structured Data Testing Tool i działa tak, jak oczekiwano.
Mam ten sam problem. czy mógłbyś wyjaśnić, jak rozwiązać ten problem ?. Sprawdź ten link https://stackoverflow.com/questions/44389546/schema-not-detected-in-google-structured-data-testing-tool – vel
@vel, musisz wstępnie zgłosić swoją aplikację kątową na serwerze internetowym za pomocą Angular Uniwersalne, aby narzędzie do testowania danych strukturalnych Google mogło analizować kod HTML, który zawiera dane strukturalne. Zobacz przykład [projekt początkowy] (https://github.com/robwormald/ng-universal-demo). – tooleks
Próbowałem z uniwersalnym kątowym. Ale nie mogę użyć narzędzia Ng build --prod. To jest problem. Jak rozwiązać ten problem? – vel
Rozwiązanie bez użycia rury (nieco czysty sposób)
Użyj this.sanitizer.bypassSecurityTrustHtml warunkiem https://angular.io/guide/security#sanitization-and-security-contexts
W szablonie
<div [innerHtml]="jsonLDString"></div>
W części/dyrektywa
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);
}
- 1. Znacznik skryptu w łańcuchu JavaScript
- 2. Znacznik skryptu AngularJS JSON-LD
- 3. Wstrzykiwanie składników Angularjs2
- 4. znacznik tekstu skryptu/zakres zmiennej babel
- 5. jak dołączyć znacznik skryptu do pliku xsl?
- 6. Czy mogę utworzyć znacznik skryptu przez jQuery?
- 7. Znacznik HTML dla DASH
- 8. Dynamicznie dodawaj znacznik skryptu z src, który może zawierać document.write
- 9. Jak przesłać pliki (wieloczęściowe) za pomocą metody angularjs2
- 10. Pisanie pomocy dla skryptu Pythona
- 11. Interfejs GUI dla skryptu R
- 12. Pomijanie błędów dla całego skryptu
- 13. Generowanie skryptu dla wyzwalaczy tylko przy użyciu kreatora skryptu
- 14. Android OverlayItem.setMarker(): Zmień znacznik dla jednego elementu
- 15. Uniwersalny znacznik czasu dla .net DateTime
- 16. Domyślny znacznik dla google google MAPVIEW?
- 17. Oblicz znacznik czasu unixa dla poprzedniej północy
- 18. Podstawa quickblox Zły znacznik czasu dla 4.1.2
- 19. Znacznik neutralny względem układu dla CSS?
- 20. Nieprawidłowy znacznik czasu dla przyszłych powiadomień
- 21. dla spacje przed błędem pierwszy znacznik
- 22. uzyskiwanie losowych obrazów dla skryptu testowego
- 23. powershell: listing katalogu ftp (pomoc dla skryptu)
- 24. Zapobieganie interpolacji Jade dla szablonu skryptu
- 25. Konfigurowanie skryptu powłoki dla konfiguracji Vagrant
- 26. Tworzenie pliku BAT dla skryptu Pythona
- 27. lokalne bezwzględne ścieżki (C: ...) dla znacznika skryptu
- 28. Demon kontra Upstart dla skryptu Pythona
- 29. setuid/setgid wrapper dla skryptu Pythona
- 30. Powłoki start/stop dla skryptu Pythona
wizyta 'http://stackoverflow.com/questions/35332430/angularjs-script-tag-json-ld/35333500#35333500' – AK1
Dziękuję za odpowiedź, ale to rozwiązanie jest dla angularjs1 nie dla wersji 2, która jest zupełnie inna . –
znalazłeś coś jeszcze? – Nicky