【发布时间】:2017-09-17 06:08:00
【问题描述】:
我有一个 Angular 4 Universal 应用程序,我想开始使用 JSON-LD 格式的微数据。
它使用带有一些内容的script标签,例如:
<script type="application/ld+json">
{
"@context": "http://schema.org",
...
}
</script>
由于此数据应按视图更改,因此我正在寻找一种方法将这些数据注入到 Angular 4 中的路由更改中。目前,script tags are stripped from templates。当使用docuemnt.createElement 的解决方法时,这在服务器端 Angular Universal 应用程序上不起作用。
我该怎么做?
编辑
我使用 Angular 4.x.x,现在称为普通 Angular。
我像这样注入document:
import { DOCUMENT } from '@angular/platform-browser';
class Test {
constructor(@Inject(DOCUMENT) private _document) {
}
public createScriptTag() {
this._document.createElement('script'); // doesn't work server-side
}
}
【问题讨论】:
-
Universal 与 Angular 4 不兼容,因此不清楚您的意思。 Angular 2 和 Angular 4 非常不同。你如何使用
document?它应该像@Inject(DOCUMENT) document一样注入,因为服务器端没有document全局。答案的质量取决于问题的质量。见stackoverflow.com/help/mcve -
@estus 我更新了问题
-
@estus,Universal 与 v4 比与 v2 更兼容..
-
@SamVloeberghs 所指的“通用”应该有明显的区别。 github.com/angular/universal 与 A4 不兼容。尽管文档当前将其描述为“通用”angular.io/docs/ts/latest/guide/universal.html,但实际上它只是
platform-server。 -
@estus,还是错了。github.com/angular/universal/tree/master/modules/… 是您在快速应用程序中使用角度引擎的方法。我在生产中使用它并使用 v4 .. :)
标签: javascript angular typescript angular-universal