0

我正在按照 Angular CLI 6 说明在此处创建库。我能够制作我的库,并成功构建它。该库由Component我用于 UI 的一个和一个 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另一个项目的中来使用它。我以前使用npm link过,但遇到了这里描述的问题,这个解决方案对我有用。

我可以成功导入库并ModuleComponentHTML 文件中使用它的选择器,以及传递输入:<my-lib [id]="'my-id'">. id正确传递了,但其中的逻辑没有ngOnInit运行。控制台不打印"ngOnInit"。但它确实 print "constructor",并且组件 UI 元素正确显示。

我是否错过了一些让ngOnInit逻辑运行的东西?

编辑:我应该提到图书馆正在运行:

  • "@angular/core": "^6.0.3"

  • "@angular/cli": "~6.0.7"

我正在尝试使用该库的项目是:

  • "@angular/core": "^5.0.1"
  • "@angular/cli": "^1.6.5"

不确定这是否会影响任何事情。

EDIT2:修复示例代码。

4

1 回答 1

1

我看到的唯一问题是您的服务实例也具有相同的名称,请将其更改为

constructor(
    private apiService: myService) {
    console.log("constructor");    
  }

ngOnInit {
    console.log("ngOnInit");
    this.apiService.DoStuff();
  }

也希望你有进口,

import { Component, OnInit } from '@angular/core';

还删除组件中的提供程序并将其移至模块级别。

于 2018-06-08T03:15:01.667 回答