5 lines
3.0 KiB
JSON
Raw Permalink Normal View History

{
"id": "errors/NG1001",
"title": "NG1001: Decorator argument is not an object literal",
"contents": "<h1 id=\"ng1001-decorator-argument-is-not-an-object-literal\">NG1001: Decorator argument is not an object literal<a title=\"Link to this heading\" class=\"header-link\" aria-hidden=\"true\" href=\"errors/NG1001#ng1001-decorator-argument-is-not-an-object-literal\"><i class=\"material-icons\">link</i></a></h1>\n<div class=\"github-links\">\n <a href=\"https://github.com/angular/angular/edit/master/aio/content/errors/NG1001.md?message=docs(...)%3A%20describe%20your%20change...\" aria-label=\"Suggest Edits\" title=\"Suggest Edits\"><i class=\"material-icons\" aria-hidden=\"true\" role=\"img\">mode_edit</i></a>\n</div>\n\n\n\n\n<div class=\"content\">\n <h2 id=\"description\">Description<a title=\"Link to this heading\" class=\"header-link\" aria-hidden=\"true\" href=\"errors/NG1001#description\"><i class=\"material-icons\">link</i></a></h2>\n <p>To make the metadata extraction in the Angular compiler faster, the decorators <code>@<a href=\"api/core/NgModule\" class=\"code-anchor\">NgModule</a></code>, <code>@<a href=\"api/core/Pipe\" class=\"code-anchor\">Pipe</a></code>, <code>@<a href=\"api/core/Component\" class=\"code-anchor\">Component</a></code>, <code>@<a href=\"api/core/Directive\" class=\"code-anchor\">Directive</a></code>, and <code>@<a href=\"api/core/Injectable\" class=\"code-anchor\">Injectable</a></code> accept only object literals as arguments.</p>\n<p>This is an <a href=\"https://github.com/angular/angular/issues/30840#issuecomment-498869540\">intentional change in Ivy</a>, which enforces stricter argument requirements for decorators than View Engine. Ivy requires this approach because it compiles decorators by moving the expressions into other locations in the class output.</p>\n\n</div>\n<br>\n<div class=\"debugging\">\n <h2 id=\"debugging-the-error\">Debugging the error<a title=\"Link to this heading\" class=\"header-link\" aria-hidden=\"true\" href=\"errors/NG1001#debugging-the-error\"><i class=\"material-icons\">link</i></a></h2>\n <p>Move all declarations:</p>\n<code-example language=\"typescript\">\nconst moduleDefinition = {...}\n\n@<a href=\"api/core/NgModule\" class=\"code-anchor\">NgModule</a>(moduleDefinition)\nexport class AppModule {\n constructor() {}\n}\n</code-example>\n<p>into the decorator:</p>\n<code-example language=\"typescript\">\n@<a href=\"api/core/NgModule\" class=\"code-anchor\">NgModule</a>({...})\nexport class AppModule {\n constructor() {}\n}\n</code-example>\n\n</div>\n\n<!-- links to this doc:\n - errors\n-->\n<!-- links from this doc:\n - api/core/Component\n - api/core/Directive\n - api/core/Injectable\n - api/core/NgModule\n - api/core/Pipe\n - errors/NG1001#debugging-the-error\n - errors/NG1001#description\n - errors/NG1001#ng1001-decorator-argument-is-not-an-object-literal\n - https://github.com/angular/angular/edit/master/aio/content/errors/NG1001.md?message=docs(...)%3A%20describe%20your%20change...\n - https://github.com/angular/angular/issues/30840#issuecomment-498869540\n-->"
}