使用类装饰器时需要 Angular2 反射元数据填充程序

Posted

技术标签:

【中文标题】使用类装饰器时需要 Angular2 反射元数据填充程序【英文标题】:Angular2 reflect-metadata shim is required when using class decorators 【发布时间】:2016-09-27 08:00:25 【问题描述】:

我正在尝试使用通用入门示例来了解有关使用 Angular2 进行服务器渲染的更多信息,我想使用 gulp 而不是 webpack。 问题是我有服务器启动时:

/Users/jaumard/IdeaProjects/trails-angular2-isomorphic/node_modules/@angular/core/src/util/decorators.js:165
        throw 'reflect-metadata shim is required when using class decorators';
        ^
reflect-metadata shim is required when using class decorators

我看到一些帖子说要添加 import 'reflect-metadata'; 但这并不能解决我的问题 :( 我想我错过了一些东西,但不知道它是什么...... 这是我使用的代码https://github.com/jaumard/trails-angular2-isomorphic

【问题讨论】:

【参考方案1】:

这个错误是因为,就像指令一样,你的组件 html 应该包含在一个 div 中。

<div>
//html
</div>

我遇到了同样的问题。当我将 HTML 包含在 div 中时,它工作正常。

【讨论】:

【参考方案2】:

事实上,import 'reflect-metadata'; 必须添加到我的 server.ts 文件中,因为我想使用服务器渲染。添加后。没有更多错误。

【讨论】:

以上是关于使用类装饰器时需要 Angular2 反射元数据填充程序的主要内容,如果未能解决你的问题,请参考以下文章

将 ES6 与 Angular2 rc3 一起使用时,需要未捕获的反射元数据 shim

Angular 2(2.0.0 到 2.2.0~)在使用“import 'reflect-metadata'”行添加自定义装饰器时出错

创建装饰器时保留元信息

为啥在这个 angular2 示例中我仍然需要 @inject?

使用类作为装饰器时,为啥 'self' 不在 args 中? [复制]

使用Typescript和类组件装饰器时如何在Vue Router中传递props