我正在按照Angular CLI 6的说明创建库here。我能够创建我的库,并成功构建它。该库包含我用于用户界面的Component
,其中包含HTML selector
。
@Component({
selector: 'my-lib',
templateUrl: './my-lib.component.html',
styleUrls: ['./my-lib.component.css'],
providers: [MyService],
})
export class MyComponent implements OnInit {
@Input() id: string;
constructor(
private myService: MyService) {
console.log("constructor");
}
ngOnInit {
console.log("ngOnInit");
this.myService.DoStuff();
}
}
现在我有一个单独的项目,我正在尝试使用这个库。我还没有发布它,所以我通过将dist/<my-lib>
的内容复制到node_modules
的{{1}}来使用它。其他项目。我之前使用的是npm link
,但我遇到了here所描述的问题,这个解决方案对我有用。
我可以成功导入库和Module
并使用HTML文件中的Component
及其选择器,以及传递输入:<my-lib [id]="'my-id'">
。 id
正确传递,但ngOnInit
中没有运行的逻辑。控制台不会打印"ngOnInit"
。但它打印"constructor"
,并且组件UI元素正确显示。
我是否遗漏了要运行ngOnInit
逻辑的内容?
编辑:我应该提到该库正在运行:
"@angular/core": "^6.0.3"
"@angular/cli": "~6.0.7"
我正在尝试使用该库的项目是:
"@angular/core": "^5.0.1"
"@angular/cli": "^1.6.5"
不确定这是否会影响任何事情。
EDIT2:修复示例代码。
答案 0 :(得分:1)
我发现只有问题是您的服务实例也具有相同的名称,将其更改为
constructor(
private apiService: myService) {
console.log("constructor");
}
ngOnInit {
console.log("ngOnInit");
this.apiService.DoStuff();
}
也希望你已导入,
import { Component, OnInit } from '@angular/core';
还会删除组件中的提供程序并将其移至模块级别。