我一直在尝试导出一个简单的 Angular4 模块以在另一个项目中工作至少一个月。阅读了很多文章,但它不起作用。这是一个包含两个文件夹的文件:
lib -> Containing a simple Angular4 module
demo -> Containing a simple AngularCli project
这lib
是 Angular 模块的一个非常简单的实现,并将demo
该模块导入到其根模块中。
无论我做什么,演示应用程序都会给我不同类型的错误,说它lib
不是 Angular 模块。有时谈论不包括装饰器,有时会出现这个错误:
错误中的错误遇到静态解析符号值。不支持函数调用。考虑将函数或 lambda 替换为对导出函数的引用(原始 .ts 文件中的位置 194:50),解析符号 NgModule
我试图瞄准es5
,es2015
但没有任何运气。
重现问题的步骤:
下载 zip 并将其解压缩到一个文件夹中
光盘
lib
文件夹运行
npm install
或yarn install
安装依赖项运行
npm run bundle
或yarn bundle
将库捆绑到dist
光盘
demo
文件夹运行
npm install
或yarn install
运行
npm install ../lib
或安装文件夹内yarn add file:../lib
的本地ng-test-lib
lib
运行
npm start
或yarn start
启动演示项目
更新:
我在这里添加了一些文件的内容:
lib/src/a-module.ts
import { NgModule } from '@angular/core';
import { ADirective } from './a-directive';
@NgModule({
declarations: [
ADirective,
],
exports: [
ADirective,
]
})
export class AModule {}
lib/src/a-directive.ts
import {
Input,
OnInit,
Directive,
} from '@angular/core';
@Directive({
selector: '[aDir]',
})
export class ADirective implements OnInit {
@Input() test: string;
ngOnInit() {
console.log(`I'm the directive, and this is test value: ${this.test}`);
}
}
lib/tsconfig.aot.json
{
"compilerOptions": {
"sourceMap": true,
"inlineSources": true,
"declaration": true,
"noImplicitAny": false,
"skipLibCheck": true,
"stripInternal": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"suppressImplicitAnyIndexErrors": true,
"module": "es2015",
"target": "es5",
"moduleResolution": "node",
"lib": [
"es2015",
"dom"
],
"outDir": "./dist",
"rootDir": "./src",
"baseUrl": ".",
"types": []
},
"files": [
"./src/a-module.ts"
],
"angularCompilerOptions": {
"strictMetadataEmit": true,
"skipTemplateCodegen": true,
"annotateForClosureCompiler": true,
"flatModuleOutFile": "index.js",
"flatModuleId": "index",
"genDir": "./dist"
}
}
有人知道这里发生了什么吗?