Библиотека Angular не запускает ngOnInit при использовании - PullRequest
0 голосов
/ 08 июня 2018

Я следую инструкциям Angular CLI 6 для создания библиотеки здесь .Я смог сделать свою библиотеку и успешно ее построить.Библиотека состоит из 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 другого проекта.Раньше я использовал npm link, но столкнулся с проблемой, описанной здесь , и это решение мне помогло.

Я могу успешно импортировать библиотеку и Module и использовать Component в файле HTML с его селектором вместе с передачей входных данных: <my-lib [id]="'my-id'">.id передается правильно, но логика в ngOnInit не запускается.Консоль НЕ печатает "ngOnInit".Но он печатает "constructor", и элементы пользовательского интерфейса компонента отображаются правильно.

Я что-то упустил, чтобы запустить ngOnInit логику?

РЕДАКТИРОВАТЬ: я должен отметить, что библиотека работает:

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

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

и проект, в котором я пытаюсь использовать библиотеку:

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

Не уверен, повлияет ли это на что-то или нет.

EDIT2: исправить пример кода.

1 Ответ

0 голосов
/ 08 июня 2018

Единственная проблема, которую я вижу, состоит в том, что ваш экземпляр службы также имеет то же имя, измените его на

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

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

, также надеюсь, что вы импортировали,

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

также удалитепровайдеры в компоненте и переместить его на уровень модуля.

...